Perché È Importante
L'autenticazione risponde a chi sei. L'autorizzazione risponde a cosa ti è permesso fare. Il broken access control è ciò che accade quando un'applicazione controlla la prima e dimentica la seconda. È la falla seria più comune sul web, motivo per cui OWASP l'ha portata al primo posto nella Top 10 del 2021, ed è spesso la classe più facile da trovare per un principiante, perché lo sfruttamento può essere semplice come cambiare un valore in una richiesta.
Tipi Comuni
- IDOR e BOLA: scambia l'identificatore di un oggetto e ricevi i dati di un altro utente. Vedi IDOR e BOLA.
- Privilege escalation verticale: un utente normale raggiunge funzionalità da amministratore che non dovrebbe avere. Vedi privilege escalation.
- Forced browsing: navigare direttamente verso endpoint nascosti o non collegati che non dovevano mai essere raggiungibili.
- HTTP method tampering: un verbo non sorvegliato come HEAD o OPTIONS aggira un controllo impostato solo per GET e POST.
- Bypass basato sugli header: falsificare
X-Forwarded-For: 127.0.0.1o usareX-Original-URLper sconfiggere una restrizione su IP o percorso e trasformare un 403 in un 200.
Un Esempio Pratico
Una richiesta a /api/admin/backup restituisce 403 Forbidden con il messaggio "admin IP required". Aggiungere l'header X-Forwarded-For: 127.0.0.1 restituisce 200 OK con il file di backup, perché il server si fida di un header IP fornito dal client che non ha mai validato. Separatamente, cambiare userId=123 in userId=124 restituisce il profilo di un altro utente perché il server ha confermato che la sessione era valida ma non ha mai verificato la proprietà dell'oggetto. Entrambi sono broken access control, trovati con il parameter tampering e la manipolazione degli header in un proxy come Burp Suite.
Come Testarla
Il metodo affidabile usa due account. Accedi come Utente A, cattura una richiesta che raggiunge uno dei suoi oggetti, poi rigiocala con la sessione dell'Utente B, oppure semplicemente scambia l'identificatore, e verifica se i dati dell'Utente A tornano indietro. Testa ogni azione CRUD, non solo le letture, dato che aggiornamento ed eliminazione sono spesso meno protetti. Prova a raggiungere endpoint admin come utente normale, ad accedere all'applicazione senza alcuna sessione e a combinare i bypass su metodo e header descritti sopra. Un controllo che regge per un GET può fallire per un DELETE.
Impatto
Poiché il controllo degli accessi governa ogni oggetto e ogni azione, una singola falla può esporre i dati di ogni utente, consentire l'account takeover o concedere il controllo amministrativo. Gli incidenti reali vanno dalla lettura delle fatture di altri clienti all'estrazione massiva di dati attraverso un singolo identificatore enumerabile, motivo per cui i team di triage classificano costantemente queste scoperte ai vertici.
Prevenzione
Nega per impostazione predefinita e concedi in modo esplicito. Imponi l'autorizzazione lato server su ogni richiesta, verifica la proprietà dell'oggetto invece del solo stato di login, applica i controlli a tutti i metodi e non fidarti mai degli header forniti dal client per l'identità né degli URL nascosti per la protezione. Centralizza la logica, testa con più account e lancia un alert sugli accessi che attraversano i confini tra utenti.
Come insegniamo Broken Access Control
Nel nostro Cybersecurity Bootcamp, non imparerai solo la teoria su Broken Access Control. Praticherai con strumenti reali in laboratori pratici, guidato da professionisti del settore che usano questi concetti quotidianamente.
Trattato in:
Modulo 10: Penetration Testing e Hacking Etico
360+ ore di formazione esperta • CompTIA Security+ incluso