Autorisatie op objectniveau verbroken
Verander één ID in de URL en lees het record van een vreemde.
Wat is Autorisatie op objectniveau verbroken?
Kapotte autorisatie op objectniveau, ook wel BOLA of IDOR genoemd, is de meest voorkomende API-kwetsbaarheid. Het eindpunt retourneert het object dat wordt genoemd door een ID in de aanvraag zonder te controleren of het bij de aanroeper hoort. Het teken is eerlijk. U wijzigt een enkel getal in een by-id-URL, leest het record van een vreemde en voert vervolgens opeenvolgende identificatiegegevens naar een bulkoogst. De oplossing vergelijkt de eigenaar van het record met de geverifieerde sessie en retourneert 404 in plaats van 403, zodat niet kan worden bevestigd dat een afgewezen ID bestaat.
Wat je leert in Autorisatie op objectniveau verbroken
- Herken gebroken autorisatie op objectniveau: een geldige sessie die het object van een andere gebruiker leest, omdat het eindpunt controleert wie er belt, maar niet of het geretourneerde record van hem of haar is
- Onderscheid het van een verbroken autorisatie op functieniveau (een rol die een functie bereikt die deze mogelijk niet aanroept) en van token-forging-escalatie van bevoegdheden (knoeien met uw eigen inloggegevens); hier is het token eerlijk, is het eindpunt toegestaan en ontbreekt de objectcontrole
- Ontdek hoe opeenvolgende of raadbare object-ID's een enkele ongeautoriseerde lezing omzetten in een volledige opsomming, en waarom onraadbare ID's dat risico verkleinen, maar geen toegangscontrole zijn
- Pas de oplossing toe: vergelijk na het laden van een object de eigenaar ervan met de identiteit van de geverifieerde sessie in plaats van met wat de beller verzendt, en weiger wanneer deze niet overeenkomen
- Geef de voorkeur aan een niet-gevonden boven een verboden object op een afgewezen object, zodat een geweigerde id niet te onderscheiden is van een ontbrekende, waardoor het bestaansorakel wordt gesloten en elke by-id wordt gecontroleerd op hetzelfde gat
Autorisatie op objectniveau verbroken — Trainingsstappen
-
Een gewone ruiter
Larkway is een rittenapp waarmee elke passagier een persoonlijke Trips API kan inschakelen om zijn eigen ritbewijzen te exporteren voor onkostendeclaraties. Bob meldde zich aan als een normale rijder, met een wegwerpidentiteit, en zette hem aan. Zijn verhaal is niets bijzonders: een eenvoudige bestuurdersstoel met een token waarop zijn eigen reizen staan vermeld. Hij opent de ontwikkelaarsconsole om te zien wat de API hem biedt.
-
Reis-ID's zijn slechts cijfers
Bob's eigen reizen worden vermeld met hun ID's, en de API-referentie laat zien hoe je een afzonderlijk reisbewijs kunt ophalen aan de hand van de ID. Er vallen twee dingen op aan deze ID's.
-
Haal zijn eigen reis
Eerst roept Bob het eindpunt aan zoals het bedoeld is: hij vraagt om een van zijn eigen ritten aan de hand van zijn id, met zijn eigen rijdertoken in een autorisatiekop, precies zoals de app dat doet.
-
Zijn reis, zoals verwacht
De server retourneert precies wat hij zou moeten retourneren: Bob's eigen reis, omdat de id waar hij om vroeg de zijne is.
-
Verander één getal
Bob verzendt hetzelfde verzoek, met hetzelfde token, en verandert alleen de ID, één onder de zijne. Als de server controleert of een trip van de beller is, zou dit niets moeten opleveren. Als het alleen controleert of zijn sessie geldig is, zal het antwoorden.
-
De rit van iemand anders
Het antwoordde. Bob's eigen rijderfiche heeft zojuist een rit gemaakt die niets met hem te maken heeft.
-
Loop de reeks
Eén vreemdeling is een curiosum. Bob blijft de ID verlagen en elke waarde retourneert een echt ontvangstbewijs. Hij pakt er nog een om het patroon te bevestigen.
-
Elke rijder, op schaal
De ID's worden op volgorde uitgevoerd en elke ID antwoordt. Zo wordt een enkel lek een oogst.
-
Kennis check
Je hebt zojuist gezien hoe een geldige passagier de ritten van vreemden las door de ID in de URL te wijzigen. Leg vast waarom.
-
De waarschuwing komt binnen
U bent eigenaar van de op passagiers gerichte Trips API van Larkway. Van de ene op de andere dag markeerde de monitoring één rijdertoken die duizenden ritten maakte die niet de zijne waren. Security Operations heeft u de details per e-mail gestuurd.
Dekking van beveiligingsframeworks
OWASP API Top 10
- API1:2023 Broken Object Level Authorization
CWE
- CWE-639 Authorization Bypass Through User-Controlled Key
- CWE-862 Missing Authorization
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security