Autorisatie op functieniveau verbroken
Ingelogd is niet hetzelfde als toegestaan. Bewaak de beheerroutes.
Wat is Autorisatie op functieniveau verbroken?
Een API bevestigt dat een beller is aangemeld en voert vervolgens de functie uit waar hij om vraagt, zonder te controleren of zijn rol deze kan aanroepen. Bevoorrechte besturingselementen zijn verborgen in de interface, terwijl de eindpunten zelf geen rolcontrole uitvoeren, zodat elk geldig token deze bereikt. Je gebruikt een eerlijk, alleen-lezen analistentoken om een volledige klantenlijst op te halen en een grote uitbetaling in de wachtrij te zetten, waarbij elk verzoek 200 wordt beantwoord. Vervolgens verzend je een authorize('admin') -bewaker op routerniveau die 403 retourneert, zodat het beheerdersoppervlak standaard wordt geweigerd en nieuwe routes de cheque overnemen.
Wat je leert in Autorisatie op functieniveau verbroken
- Herken gebroken autorisatie op functieniveau: een geldige sessie bereikt een bevoorrechte functie omdat het eindpunt controleert wie er belt, maar niet of hun rol deze mag aanroepen
- Onderscheid het van verbroken autorisatie op objectniveau (het wijzigen van een object-ID) en van escalatie van token-forging-rechten (knoeien met uw eigen inloggegevens); hier is het token eerlijk en weinig privileges en ontbreekt de functiecontrole
- Begrijp dat het verbergen van een beheerderscontrole in de gebruikersinterface of het weglaten van een route uit de documentatie geen toegangscontrole is, omdat clients de API rechtstreeks aanroepen en het eindpunt nog steeds antwoordt
- Pas de oplossing toe: dwing autorisatie aan de serverzijde af voor elke geprivilegieerde functie, neem de rol van de beller over van de geauthenticeerde sessie in plaats van het verzoek, en geef de voorkeur aan een beveiliging tegen standaard weigeren aan de routergrens, zodat nieuwe routes de controle overnemen
- Controleer elk beheerders-, interne en alleen-personeelseindpunt op ontbrekende rollen, vooral wanneer bevoorrechte en gewone functies één geverifieerde API delen
Autorisatie op functieniveau verbroken — Trainingsstappen
-
Een alleen-lezen stoel
Fennmark beheert een betalingsplatform en deelt zelfbedieningsontwikkelaarsaccounts uit aan iedereen die zich aanmeldt. Bob nam er een, met een wegwerpidentiteit. Zijn zetel is een analist: alleen-lezen, sandboxgericht, niets gevoeligs. Hij opent de ontwikkelaarsconsole om te zien wat zijn account is en wat de API te bieden heeft.
-
Beheerfuncties, duidelijk zichtbaar
De stoel van Bob is alleen-lezen, dus de beheerdersbedieningen zijn voor hem verborgen in de interface. De API-referentie is echter niet verborgen en bevat alle functies die alleen voor het personeel toegankelijk zijn, naast de functies die hij mag aanroepen.
-
Wat het teken zegt
Voordat hij iets bevoorrechts aanraakt, controleert Bob welke identiteit zijn eigen token draagt. Hij wijst de API-tester naar het accounteindpunt en verzendt zijn sessietoken in een autorisatieheader, op dezelfde manier als de app dat doet.
-
Een eerlijke analist
De server bevestigt precies wat Bob had verwacht. Zijn teken is echt en het zegt duidelijk wat hij is.
-
Roep een beheerdersfunctie op
Bob behoudt hetzelfde verzoek en hetzelfde alleen-lezen token, en verandert alleen de bron in de URL naar een functie die in de referentie is gemarkeerd als alleen voor personeel: het volledige klantenbestand. Als de API alleen controleert of zijn sessie geldig is en nooit zijn rol controleert, zal hij antwoorden.
-
De hele selectie, aan een analist
De admin-functie antwoordde. Bob's alleen-lezen sandbox-token heeft zojuist de klantrecords van het platform opgehaald.
-
Verplaats het geld
Gegevens lezen is één ding. Bob roept nu een functie aan die van status verandert: het uitbetalingseindpunt dat een uitbetaling in de wachtrij plaatst. Hij verzendt het met hetzelfde analistentoken en wijst de bestemming naar een account dat hij beheert.
-
Een uitbetaling, in de wachtrij geplaatst door een sandbox-account
De geldverplaatsingsfunctie functioneerde ook. Geen beheerder, geen goedkeuring, geen speciale referentie.
-
Kennis check
Je hebt zojuist gezien hoe een alleen-lezen-account het klantenbestand las en een uitbetaling in de wachtrij zette. Leg vast waarom.
-
De waarschuwing komt binnen
U bent eigenaar van de backoffice-API van Fennmark. Van de ene op de andere dag werd door de monitoring een zelfbedieningsontwikkelaarsaccount gemarkeerd dat alleen-personeelseindpunten aanriep. Security Operations heeft u de details per e-mail gestuurd.
Dekking van beveiligingsframeworks
OWASP API Top 10
- API5:2023 Broken Function Level Authorization
CWE
- CWE-285 Improper Authorization
- 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