Autorizzazione a livello di oggetto interrotta
Cambia un ID nell'URL e leggi il record di uno sconosciuto.
Cos’è Autorizzazione a livello di oggetto interrotta?
L'autorizzazione a livello di oggetto interrotta, chiamata anche BOLA o IDOR, è la vulnerabilità API più comune. L'endpoint restituisce l'oggetto denominato da un identificatore nella richiesta senza verificare che appartenga al chiamante. Il gettone è onesto. Cambierai un singolo numero in un URL per ID, leggerai il record di uno sconosciuto, quindi inserirai gli identificatori sequenziali in una raccolta collettiva. La correzione confronta il proprietario del record con la sessione autenticata e restituisce 404 anziché 403, quindi non è possibile confermare l'esistenza di un ID rifiutato.
Cosa imparerai in Autorizzazione a livello di oggetto interrotta
- Riconoscere l'autorizzazione a livello di oggetto non funzionante: una sessione valida che legge l'oggetto di un altro utente perché l'endpoint controlla chi sta chiamando ma non se il record restituito appartiene a lui
- Distinguerlo dall'autorizzazione a livello di funzione interrotta (un ruolo che raggiunge una funzione che potrebbe non chiamare) e dall'escalation dei privilegi di forgiatura di token (manomissione delle proprie credenziali); qui il token è onesto, l'endpoint è consentito e manca il controllo dell'oggetto
- Scopri come gli ID oggetto sequenziali o indovinabili trasformano una singola lettura non autorizzata in un'enumerazione completa e perché gli ID non indovinabili riducono tale rischio ma non costituiscono il controllo dell'accesso
- Applica la correzione: dopo aver caricato un oggetto, confronta il suo proprietario con l'identità della sessione autenticata anziché con qualsiasi cosa inviata dal chiamante e rifiuta quando non corrispondono
- Preferire un non trovato rispetto a un proibito su un oggetto rifiutato in modo che un ID negato sia indistinguibile da uno mancante, chiudendo l'oracolo di esistenza e controllando ogni by-id letto per lo stesso divario
Autorizzazione a livello di oggetto interrotta — Fasi della formazione
-
Un cavaliere qualunque
Larkway è un'app di ride-hailing e consente a qualsiasi ciclista di attivare un'API Trips personale per esportare le proprie ricevute di corsa per le note spese. Bob si è iscritto come pilota normale, con un'identità usa e getta, e l'ha attivata. Il suo resoconto non è niente di speciale: un semplice sedile da pilota con un token che legge i suoi viaggi. Apre la console per sviluppatori per vedere cosa gli offre l'API.
-
Gli ID di viaggio sono solo numeri
I viaggi di Bob sono elencati con i relativi ID e il riferimento API mostra come recuperare ogni singola ricevuta di viaggio in base al relativo ID. Due cose risaltano in questi ID.
-
Prendi il suo viaggio
Per prima cosa Bob chiama l'endpoint nel modo in cui deve essere utilizzato: richiede uno dei suoi viaggi tramite il suo ID, portando il proprio rider token in un'intestazione di autorizzazione, esattamente come fa l'app.
-
Il suo viaggio, come previsto
Il server restituisce esattamente ciò che dovrebbe: il viaggio di Bob, perché l'ID richiesto è il suo.
-
Cambia un numero
Bob invia la stessa richiesta, portando con sé lo stesso token, e cambia solo l'id, uno sotto il suo. Se il server verifica che un viaggio appartiene al chiamante, questo non dovrebbe restituire nulla. Se controlla solo che la sua sessione sia valida, risponderà.
-
Il giro di qualcun altro
Ha risposto. Il token pilota di Bob ha appena effettuato un viaggio che non ha nulla a che fare con lui.
-
Segui la sequenza
Uno sconosciuto è una curiosità. Bob continua a diminuire l'ID e ogni valore restituisce una ricevuta reale. Ne prende un altro per confermare lo schema.
-
Ogni ciclista, su larga scala
Gli ID vengono eseguiti in sequenza e ognuno risponde. Ciò trasforma una singola perdita in un raccolto.
-
Verifica della conoscenza
Hai appena visto un utente valido leggere i viaggi di sconosciuti modificando l'ID nell'URL. Blocca il perché.
-
Arriva l'allerta
Possiedi l'API Trips rivolta agli utenti di Larkway. Durante la notte, il monitoraggio ha segnalato un token di un ciclista che effettuava migliaia di viaggi che non erano i suoi. Le operazioni di sicurezza ti hanno inviato via email i dettagli.
Copertura dei framework di sicurezza
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