Revisione AuthZ assistita dall'IA: Analizzare i confini delle autorizzazioni in Ory Kratos
L'IA è scarsa nel trovare bug, ma eccellente nel generare sospetti.
Nella sicurezza, la cosa più economica che un'IA può fare è creare un'ondata di falsi report. Ecco perché i programmi di bug bounty si stanno interrompendo o stringendo le regole.
Io uso l'IA in modo diverso. Lascio che l'IA generi in eccesso ipotesi basate sul mio Catalogo degli AuthZ Smell. Poi, faccio il lavoro sporco. Il mio compito è smontare quelle ipotesi.
Una revisione di successo non è un elenco di bug. È una tabella di scarto di idee che sono fallite al test.
Ho revisionato il codice sorgente di Ory Kratos. Kratos gestisce l'identità e la gestione degli utenti. È un'area ad alto rischio perché utilizza più identità e API pubbliche.
Ho testato cinque ipotesi:
- H1: L'Admin API non ha autorizzazione nel codice.
- H2: Fughe di dati cross-identity o cross-tenant.
- H3: Riutilizzo dei token nei flussi di recupero.
- H4: Confusione dell'identità nei flussi delle impostazioni.
- H5: Assegnazione del tenant tramite i payload delle richieste.
I risultati:
- H1: CONFUTATA. L'autorizzazione risiede al confine della rete, non nell'handler del codice. È una scelta progettuale.
- H2: CONFUTATA. Un livello centrale di accesso ai dati filtra tutte le query tramite l'ID del tenant. Gli utenti non possono aggirarlo.
- H3: CONFUTATA. I token sono monouso e hanno una scadenza temporale.
- H4: CONFUTATA. I flussi sono vincolati alla sessione, non all'input dell'utente.
- H5: CONFUTATA. Gli ID del tenant provengono dal contesto di sistema, non dal corpo della richiesta.
Cinque ipotesi sono entrate. Zero scoperte sono emerse. Questa è una revisione di successo.
Due lezioni per il tuo lavoro sulla sicurezza:
La sicurezza a livello di deployment può sembrare una mancanza di sicurezza. Se un guardiano si trova a livello di rete, il codice sembrerà nudo. Non segnalarlo finché non hai controllato l'architettura.
Trova il punto di strozzatura. Se un sistema impone i confini a livello di dati, i singoli handler non necessitano di controlli. Invece di chiedere "questo handler controlla i permessi", chiediti "qualcuno può raggiungere i dati senza passare per il punto di strozzatura?".
Usa l'IA per scartare i candidati. Usa gli umani per verificare i sopravvissuti. Il valore risiede nello scarto.
Community di apprendimento opzionale: https://t.me/GyaanSetuAi
