Broken Object Level Authorization in the Wild: An Empirical Taxonomy from 100+ Bug Bounty Disclosures
Dit artikel presenteert een grootschalige empirische analyse van 107 geclassificeerde bug bounty-rapporten, waaruit blijkt dat Action-Level Object BOLA een dominante maar ondervertegenwoordigde kwetsbaarheidsfamilie is, en aantoont dat de afhankelijkheid van platformtags de prevalentie van Broken Object Level Authorization aanzienlijk overdrijft.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://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
Stel je voor dat je door een enorm, high-tech appartementencomplex loopt. Je hebt een sleutelkaart die je toegang geeft tot het gebouw (authenticatie), maar de echte beveiliging zou moeten controleren welk specifiek appartement je mag betreden.
Broken Object Level Authorization (BOLA) is wat er gebeurt wanneer de beveiligingswachter van het gebouw vergeet je sleutelkaart te controleren tegen het specifieke appartementnummer dat je probeert te openen. Je bent misschien een geldige bewoner, maar je probeert appartement 402 te openen, en de wachter zegt gewoon: "Natuurlijk, ga je gang," zonder te controleren of 402 aan jou toebehoort.
Dit artikel is een uitgebreid onderzoek naar 107 echte beveiligingsrapporten uit een bug bounty-programma (waarbij hackers betaald krijgen om deze gaten te vinden). De onderzoekers wilden voorbij de "theoretische" beveiligingsadviezen gaan en kijken naar wat er echt gebeurt in de echte wereld.
Hier is de opsplitsing van hun bevindingen, met eenvoudige analogieën:
1. Het "Label Noise"-probleem (De Valse Alarmen)
De onderzoekers begonnen met het bekijken van 200 rapporten die op HackerOne waren getagd als "IDOR" (een veelvoorkomende naam voor dit type bug).
- De Bevinding: Slechts 42% van die rapporten was daadwerkelijk het echte werk.
- De Analogie: Stel je een brandalarm-systeem voor dat 200 keer afgaat. De onderzoekers ontdekten dat 39% van de tijd er geen brand was; het was gewoon iemand die toast verbrandde, een stoomdouche of een defecte sensor.
- Conclusie: Alleen omdat een systeem is getagd met "IDOR", betekent niet dat het de specifieke, gevaarlijke "Broken Object"-kwetsbaarheid heeft. Beveiligingsteams overschatten het risico vaak omdat ze te veel vertrouwen op de tags.
2. De Twee Hoofdschurken (De Taxonomie)
De onderzoekers sorteerden de echte bugs in zes categorieën. Twee daarvan waren de duidelijke winnaars, goed voor bijna 80% van alle gevallen:
Schurk A: De "Direct Object Reference" (De Telefoonboek-truc)
- Wat het is: Je ziet een URL zoals
website.com/factuur/101. Je verandert het nummer in102, en plotseling zie je de factuur van iemand anders. - De Analogie: Het is alsof je naar een rij brievenbussen loopt. Je weet dat je busje #101 is. Je probeert #102, en het slot is kapot, dus je opent het en leest de post van je buurman.
- Frequentie: Dit gebeurde in 37% van de gevallen.
- Wat het is: Je ziet een URL zoals
Schurk B: De "Action-Level Object" (De Vandalist)
- Wat het is: Dit is de grote verrassing. Het gaat niet alleen om het lezen van iemands data; het gaat om het wijzigen of verwijderen ervan.
- De Analogie: Je loopt naar het brievenbusje van je buurman (waar je niet zou mogen aanraken), en in plaats van alleen de post te lezen, ruk je het brievenbusje van de muur, verwijder je hun e-mails of transfer je hun geld.
- Frequentie: Dit gebeurde in 42% van de gevallen.
- Waarom het belangrijk is: De meeste beveiligingsgidsen focussen op het "lezen" van data. Dit artikel zegt: "Hé, de slechteriken vernietigen en wijzigen data vaker dan dat ze gewoon spioneren."
3. De Andere Sluwe Schurken
De overige 20% van de bugs was complexer:
- Tenant Isolation: Je zit in een gedeeld kantoorgebouw. Je probeert de deur te openen naar een kantoorcomplex van een ander bedrijf, en het slot faalt.
- Workflow-Context: Je bent ontslagen bij een bedrijf, maar het systeem laat je nog steeds toegang tot de "gearchiveerde" bestanden van een project waar je eerder aan werkte, omdat het systeem vergeten is je status bij te werken.
- Chained Disclosure: Je kunt het ID niet raden, maar je vindt een lijst met ID's in een ander deel van de app (zoals een ontvangstbewijs) en gebruikt die lijst om in de accounts van anderen te breken.
- Object Rebinding: Je bedriegt het systeem om te denken dat jij het object bezit door een verborgen veld in het verzoek te wijzigen (zoals het wijzigen van de "Eigenaar"-naam op een document).
4. De "Verticale" Verrassing (Het Liftje)
Meestal denken we aan deze aanvallen als "Horizontaal" (Gebruiker A steelt van Gebruiker B).
- De Bevinding: In 12% van de gevallen slaagde een reguliere gebruiker erin om dingen toe te komen of te verwijderen die toebehoorden aan een Administrator.
- De Analogie: Een reguliere bewoner in het appartementencomplex slaagt erin om het privé-kantoor van de gebouwsbeheerder binnen te lopen en de hoofdsleutels te verwijderen.
- Conclusie: Dit is een enorm risico dat de meeste beveiligingschecklists negeren, omdat ze ervan uitgaan dat "Admins veilig zijn".
5. De "Magische" ID's Werken Niet
Ontwikkelaars denken vaak: "Als we geen simpele nummers gebruiken zoals 1, 2, 3, maar in plaats daarvan lange, willekeurige codes (UUID's) of gecodeerde strings, zijn we veilig."
- De Bevinding: 39% van de succesvolle aanvallen gebruikte deze "complexe" ID's.
- De Analogie: De slechteriken vonden een manier om de "geheime code" op het brievenbusje te decoderen, realiseerden zich dat het gewoon een verborgen nummer was, en verhoogden vervolgens gewoon het nummer om bij het volgende brievenbusje te komen.
- Conclusie: Het verbergen van de ID lost het probleem niet op. De server moet nog steeds controleren of je het object bezit, ongeacht hoe de ID eruit ziet.
6. De "GraphQL"-Gaten
Het artikel vond dat veel moderne apps een systeem genaamd GraphQL gebruiken. Deze systemen gebruiken "Global IDs" (zoals gid://hackerone/Rapport/123).
- De Bevinding: Aanvallers ontdekten dat als ze deze ID's decodeerden, ze de sequentiële nummers eronder onthulden, waardoor ze het volgende ID gemakkelijk konden raden.
- Conclusie: Alleen omdat een ID eruit ziet als een complexe reeks tekens, betekent niet dat het willekeurig is.
Samenvatting voor de Gemiddelde Mens
Dit artikel vertelt ons dat:
- Vertrouw niet op de tags: Alleen omdat een systeem is gemarkeerd als een specifieke bug, betekent niet dat het daadwerkelijk op die specifieke manier kapot is.
- De slechteriken zijn destructief: Ze stelen niet alleen data; ze verwijderen en wijzigen het vaker dan we dachten.
- Geheime codes zijn niet genoeg: Het gebruik van complexe ID's stopt hackers niet als de server niet controleert wie de data bezit.
- Reguliere gebruikers kunnen admin's pijn doen: Een normaal gebruikersaccount kan soms inbreken op de spullen van de "baas".
Het artikel concludeert dat beveiligingstesten moeten veranderen. We moeten stoppen met alleen controleren of je de data van iemand anders kunt lezen, en beginnen met controleren of je het kunt verwijderen of wijzigen, en we moeten testen of reguliere gebruikers per ongeluk (of opzettelijk) in de spullen van de admin kunnen breken.
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.