Qualifying Observation Integrity for Selective Authorization in PostgreSQL
Dit artikel presenteert een beperkte PostgreSQL-installatiekwalificator die de integriteit van selectieve autorisatie waarborgt door een producent-consument-contract af te dwingen via codecontroles en geauthenticeerde gedragsorakels, waardoor veilig hergebruik van beleidsbeslissingen mogelijk wordt en een prestatieverbetering van 24% op ongewijzigde gegevens wordt bereikt, terwijl onveilige kwalificaties die eenvoudigere structurele lints missen strikt worden voorkomen.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
In de digitale wereld fungeren databases als het centrale geheugen voor alles, van bankrekeningen tot winkelwagentjes bij online winkelen. Ze slaan de huidige staat van de wereld op: hoeveel geld er op een rekening staat, welke artikelen op voorraad zijn, of of een gebruiker toestemming heeft om een gebouw te betreden. Wanneer een computerprogramma een database vraagt om toestemming voor een actie uit te voeren, controleert de database de huidige feiten. Als de feiten sinds de laatste controle zijn veranderd, kan het antwoord anders zijn. Bijvoorbeeld: een aankoop kan worden goedgekeurd wanneer een gebruiker voldoende geld heeft, maar als een andere transactie dat geld een fractie van een seconde later uitgeeft, moet de goedkeuring worden ingetrokken. Om veilig te blijven, controleren systemen vaak de feiten elke keer opnieuw, vlak voordat een actie plaatsvindt. Dit is betrouwbaar, maar het kan traag zijn, vooral wanneer dezelfde feiten duizenden keren achter elkaar worden gecontroleerd zonder dat ze veranderen.
Onderzoekers zoeken al lang naar manieren om dit te versnellen door te onthouden wanneer de feiten voor het laatst zijn gecontroleerd. Als het systeem kan bewijzen dat de onderliggende gegevens niet zijn veranderd, kan het de oude toestemming hergebruiken zonder opnieuw te vragen. Dit wordt selectieve autorisatie genoemd. Deze afkorting werkt echter alleen als het systeem absoluut zeker kan weten dat de gegevens echt niet zijn veranderd. Als het systeem wordt misleid om te denken dat de gegevens stabiel zijn terwijl ze dat in werkelijkheid niet zijn, kan het toestemming verlenen voor een transactie die geblokkeerd zou moeten worden. De kernuitdaging is niet alleen het controleren van de gegevens, maar het verifiëren dat de mechanismen die bedoeld zijn om veranderingen bij te houden zelf correct werken en zichtbaar zijn voor de juiste mensen.
Een onderzoeker genaamd Aleksandar Mihajlovic heeft een methode ontwikkeld om deze trackingmechanismen te verifiëren binnen een specifiek type databasesysteem genaamd PostgreSQL. Het doel was om een strikte set regels op te stellen waaraan een database-installatie moet voldoen om met deze afkorting te mogen werken. Het systeem, genaamd OntoCommit, fungeert als een poortwachter. Voordat een database wordt toegestaan om oude toestemmingsbeslissingen te hergebruiken, inspecteert deze poortwachter de code en configuratie om te waarborgen dat elke wijziging in de gegevens correct wordt geregistreerd en dat de persoon die de records controleert, die records ook daadwerkelijk kan zien. De focus van het onderzoek ligt op een specifieke grens: het moment waarop een wijziging wordt doorgevoerd en het moment waarop deze wordt waargenomen. Als er een kloof tussen die twee bestaat, komt de veiligheid van het hele systeem in gevaar.
De studie begon met het identificeren van hoe gemakkelijk dit vertrouwen kon worden geschaad, zelfs wanneer de code aan de oppervlakte correct leek. De onderzoeker vond twee specifieke manieren waarop een systeem stilzwijgend kon falen. In het eerste geval werden de invoernamen van een hulpfunctie die bedoeld was om een veranderingscounter bij te werken, verwisseld. De code draaide nog steeds en de typen gegevens die het accepteerde waren correct, maar omdat de namen verwisseld waren, werd de teller voor één type wijziging bijgewerkt terwijl de teller voor een ander type vast bleef zitten. Het was als een verkeerslichtsysteem waarbij de sensor voor de noord-zuidbaan per ongeluk verbonden was met de oost-westknop; de lichten zouden wel veranderen, maar niet voor de auto's die ze nodig hadden. In het tweede geval was het systeem geconfigureerd met een beveiligingsfunctie die bepaalde rijen met gegevens verborg voor reguliere gebruikers. De veranderingscounter werd door de systeembeheerder correct bijgewerkt, maar de persoon die de toestemming controleerde, werd geblokkeerd voor het zien van die update. Voor de controleur leek de teller op nul te staan, terwijl deze in werkelijkheid was toegenomen. Dit creëerde een vals gevoel van veiligheid.
Om deze fouten te voorkomen, heeft de onderzoeker een kwalificatietool gebouwd die de database-installatie controleert voordat deze de afkorting mag gebruiken. Deze tool zoekt niet alleen naar de aanwezigheid van code; het verifieert de exacte koppeling van functienamen, het eigendom van tabellen en de zichtbaarheidsinstellingen voor elke gebruikersrol. Het eist dat de code die verantwoordelijk is voor het bijwerken van de veranderingscounters exact overeenkomt met de handtekening die door het systeem wordt verwacht. Het verbiedt ook het gebruik van row-level security op de specifieke tabellen die deze wijzigingen bijhouden, om te garanderen dat de persoon die de toestemming controleert, altijd de ware staat van de teller kan zien. De tool fungeert als een rigoureuze inspecteur die elke installatie afwijst die probeert unsupported variaties te gebruiken of die het bewijs van verandering verbergt.
De onderzoeker testte deze aanpak in een gecontroleerde omgeving die een volledig aankoopproces simuleerde. Het systeem werd opgezet om een scenario te behandelen waarbij een gebruiker iets probeert te kopen, waarbij het saldo van de rekening en eventuele bestaande blokkeringen op de fondsen worden gecontroleerd. Het experiment vergeleek twee methoden: één waarbij het systeem het volledige beleid elke keer vanaf nul evalueert, en één waarbij het systeem de selectieve autorisatie-afkorting gebruikt. De tests werden uitgevoerd op een standaardversie van de database-software, maar binnen een gesimuleerde computermgeving om een nauwkeurige controle over de omstandigheden te garanderen. De studie omvatte een set van eenentachtig verschillende configuratieparen, waarvan sommige als veilig en andere als onveilig waren ontworpen, om te zien of de kwalificatietool het verschil kon zien.
De resultaten toonden aan dat de kwalificatietool zeer effectief was in het identificeren van onveilige configuraties. Het verwierp succesvol alle vijf de opzettelijk onveilige opstellingen, inclusincluding de gevallen met verwisselde parameternamen en verborgen gegevensrijen. Tegelijkertijd accepteerde het alle achtenveertig geldige, veilige configuraties. Het weigerde ook correct twee configuraties die weliswaar veilig waren, maar niet voldeden aan de strikte regels van de tool, wat aantoont dat het de voorkeur geeft aan veiligheid boven gemak. In de prestatietests bleek de methode van selectieve autorisatie aanzienlijk sneller te zijn wanneer de gegevens onveranderd bleven. Voor een dataset van tienduizend rijen voltooide het systeem dat de afkorting gebruikte de cyclus in een mediane tijd van zesenzestig milliseconden, terwijl het systeem dat alles opnieuw controleerde achtenventizyveentachtig milliseconden duurde. Dit betekende een reductie in tijd van vierentwintig procent. Echter, de studie toonde ook aan dat wanneer de gegevens daadwerkelijk veranderden, de afkorting geen snelheidsvoordeel bood en zelfs iets trager kon zijn, omdat het systeem het beleid opnieuw moest evalueren.
Het onderzoek benadrukte ook de beperkingen van testen. De onderzoeker toonde aan dat het simpelweg uitvoeren van een paar tests om te zien of het systeem werkt, niet genoeg is om te garanderen dat het altijd zal werken. Het is mogelijk om een scenario te construeren waarin een systeem elke test doorstaat, maar toch faalt onder een specifieke, onzichtbare conditie. De studie toonde aan dat een systeem een reeks controles kan doorstaan terwijl het nog steeds een kritieke wijziging verbergt voor de waarnemer. Dit betekent dat de enige manier om veiligheid te garanderen, het afdwingen van strikte regels is over hoe het systeem wordt gebouwd, in plaats van enkel te vertrouwen op testen om fouten te vinden. De tool beweert niet te bewijzen dat het systeem perfect is in elk mogelijk universum, maar het biedt een verifieerbaar contract dat de installatie een specifiek, veilig patroon volgt.
Uiteindelijk biedt het werk een praktische methode om databases sneller te maken zonder de veiligheid op te offeren. Door een duidelijke set regels te definiëren voor hoe de tracking van wijzigingen moet worden geïmplementeerd en geverifieerd, heeft de onderzoeker een manier gecreëerd om erop te vertrouwen dat de database de waarheid spreekt over zijn eigen staat. De studie beweert niet dat het elk probleem in databasebeveiliging oplost, noch suggereert het dat deze methode in elke situatie moet worden gebruikt. Het is een gespecialiseerde oplossing voor een specifiek type database-opstelling, een die een deel van de flexibiliteit inruilt voor een hogere mate van zekerheid. De bevindingen suggereren dat voor toepassingen waar snelheid en veiligheid beide cruciaal zijn, zoals financiële transacties, een gekwalificeerd systeem een betrouwbare afkorting kan bieden. Het onderzoek concludeert dat de veiligheid van deze afkortingen volledig afhangt van de integriteit van het observatiepad, van het moment waarop een wijziging wordt doorgevoerd tot het moment waarop deze wordt waargenomen, en dat dit pad met dezelfde strengheid moet worden gecontroleerd als de gegevens zelf.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.