Autorizzazione del livello di funzione interrotta
L'accesso non equivale a quello consentito. Proteggi i percorsi amministrativi.
Cos’è Autorizzazione del livello di funzione interrotta?
Un'API conferma che il chiamante ha effettuato l'accesso, quindi esegue qualsiasi funzione richiesta, senza verificare che il suo ruolo possa invocarla. I controlli privilegiati sono nascosti nell'interfaccia mentre gli endpoint stessi non effettuano alcun controllo del ruolo, quindi qualsiasi token valido li raggiunge. Utilizzerai un token analista onesto di sola lettura per estrarre un elenco completo di clienti e mettere in coda un pagamento di grandi dimensioni, a ogni richiesta è stato risposto 200. Quindi spedisci una guardia authorize('admin') a livello di router che restituisce 403, quindi la superficie di amministrazione è negata per impostazione predefinita e le nuove rotte ereditano il controllo.
Cosa imparerai in Autorizzazione del livello di funzione interrotta
- Riconoscere l'autorizzazione a livello di funzione interrotta: una sessione valida che raggiunge una funzione privilegiata perché l'endpoint controlla chi sta chiamando ma non se il suo ruolo può chiamarla
- Distinguerlo dall'autorizzazione a livello di oggetto non funzionante (modifica dell'ID di un oggetto) e dall'escalation dei privilegi di forgiatura di token (manomissione delle proprie credenziali); qui il token è onesto e con pochi privilegi e manca il controllo della funzione
- Tieni presente che nascondere un controllo di amministrazione nell'interfaccia utente o omettere un percorso dalla documentazione non è un controllo di accesso, perché i client chiamano direttamente l'API e l'endpoint risponde comunque
- Applica la correzione: applica l'autorizzazione lato server su ogni funzione privilegiata, assumi il ruolo del chiamante dalla sessione autenticata anziché dalla richiesta e preferisci una guardia di rifiuto predefinito al confine del router in modo che le nuove rotte ereditino il controllo
- Controlla ogni endpoint amministrativo, interno e riservato al personale per verificare il ruolo mancante, soprattutto laddove le funzioni privilegiate e ordinarie condividono un'API autenticata
Autorizzazione del livello di funzione interrotta — Fasi della formazione
-
Un posto di sola lettura
Fennmark gestisce una piattaforma di pagamento e distribuisce account sviluppatore self-service a chiunque si iscriva. Bob ne prese uno, con un'identità usa e getta. Il suo posto è un analista: sola lettura, con ambito sandbox, niente di sensibile. Apre la console per sviluppatori per orientarsi su cos'è il suo account e cosa offre l'API.
-
Funzioni di amministrazione, in bella vista
La postazione di Bob è di sola lettura, quindi i controlli di amministrazione gli sono nascosti nell'interfaccia. Il riferimento API non è nascosto, tuttavia, ed elenca tutte le funzioni riservate allo staff accanto a quelle che può chiamare.
-
Cosa dice il token
Prima di toccare qualcosa di privilegiato, Bob controlla quale identità porta il suo token. Punta il tester API all'endpoint dell'account e invia il token di sessione in un'intestazione di autorizzazione, proprio come fa l'app.
-
Un analista onesto
Il server conferma esattamente ciò che Bob si aspettava. Il suo segno è autentico e dice chiaramente chi è.
-
Chiama una funzione di amministrazione
Bob mantiene la stessa richiesta e lo stesso token di sola lettura e modifica solo la risorsa nell'URL in una funzione di riferimento contrassegnata come riservata allo staff: l'elenco completo dei clienti. Se l'API controlla solo che la sua sessione sia valida e non controlla mai il suo ruolo, risponderà.
-
L'intero elenco, per un analista
La funzione di amministrazione ha risposto. Il token sandbox di sola lettura di Bob ha appena estratto i record dei clienti della piattaforma.
-
Sposta i soldi
Leggere i dati è una cosa. Bob ora chiama una funzione che cambia stato: l'endpoint di erogazione che mette in coda un pagamento. Lo invia con lo stesso token analista e indirizza la destinazione verso un account che controlla.
-
Un pagamento, messo in coda da un account sandbox
Anche la funzione di spostamento del denaro funzionava. Nessun amministratore, nessuna approvazione, nessuna credenziale speciale.
-
Verifica della conoscenza
Hai appena visto un account di sola lettura leggere l'elenco dei clienti e mettere in coda un pagamento. Blocca il perché.
-
Arriva l'allerta
Possiedi l'API di back-office di Fennmark. Durante la notte, il monitoraggio ha segnalato un account sviluppatore self-service che chiamava endpoint riservati al personale. Le operazioni di sicurezza ti hanno inviato via email i dettagli.
Copertura dei framework di sicurezza
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