OWASP Top 10 è il documento di riferimento mondiale per la sicurezza delle applicazioni web, pubblicato e aggiornato dall’Open Worldwide Application Security Project (OWASP). Elenca le dieci categorie di vulnerabilità più critiche, diffuse e pericolose per le applicazioni web, basandosi su dati raccolti da centinaia di organizzazioni e migliaia di applicazioni reali. Non è una lista di bug specifici, ma una tassonomia di classi di rischio che orienta sviluppatori, tester e architect nella costruzione di software sicuro.
L’edizione più recente (2021) ha introdotto tre nuove categorie e riorganizzato le precedenti rispetto alla versione 2017.
Le dieci categorie (edizione 2021)
A01 — Broken Access Control
Controlli di accesso assenti o mal configurati consentono a utenti non autorizzati di accedere a risorse, funzioni o dati altrui. Comprende IDOR, escalation di privilegi orizzontale e verticale, e accesso diretto a URL protette senza autenticazione.
Frequenza: la categoria più diffusa — presente nel 94% delle applicazioni testate.
A02 — Cryptographic Failures
Uso improprio o assente di crittografia per proteggere dati sensibili in transito e a riposo. Ingloba la vecchia categoria “Sensitive Data Exposure” ampliandola con l’analisi delle cause crittografiche: algoritmi deboli (MD5, SHA-1, DES), chiavi hardcoded, certificati non validati, mancanza di TLS.
A03 — Injection
Dati non validati inviati a un interprete (SQL, LDAP, OS shell, XML) vengono eseguiti come comandi. Include SQL Injection, LDAP Injection, OS Command Injection, e XXE. La difesa principale è il binding parametrizzato delle query e la validazione rigorosa dell’input.
A04 — Insecure Design
Categoria nuova nel 2021. Riguarda le falle architetturali introdotte in fase di progettazione: threat modeling assente, requisiti di sicurezza ignorati, assenza di principi come defense in depth e least privilege. Non può essere corretta solo con una migliore implementazione — richiede riprogettazione.
A05 — Security Misconfiguration
Configurazioni errate a ogni livello dello stack: permessi eccessivi, account di default non disabilitati, stack trace esposte, header di sicurezza assenti, cloud storage pubblico, porte aperte non necessarie. Legata strettamente ai Security Headers HTTP.
A06 — Vulnerable and Outdated Components
Uso di librerie, framework o componenti con vulnerabilità note (CVE). L’ecosistema open source amplifica il rischio: una singola dipendenza vulnerabile può compromettere centinaia di applicazioni. Richiede un processo di gestione delle dipendenze (Software Composition Analysis) e aggiornamenti tempestivi.
A07 — Identification and Authentication Failures
Debolezze nei meccanismi di autenticazione: credenziali deboli, mancanza di MFA, gestione insicura delle sessioni (ID predicibili, mancata invalidazione al logout), attacchi di credential stuffing non mitigati.
A08 — Software and Data Integrity Failures
Categoria nuova nel 2021. Comprende scenari in cui il codice o i dati vengono aggiornati senza verifica di integrità: pipeline CI/CD compromesse, aggiornamenti automatici non firmati, deserializzazione insicura (Insecure Deserialization), Supply Chain Attack.
A09 — Security Logging and Monitoring Failures
Assenza o inadeguatezza di logging degli eventi di sicurezza: tentativi di login falliti non registrati, alert non generati, log non protetti da manomissione, assenza di correlazione (SIEM). Senza visibilità, le intrusioni restano non rilevate per settimane o mesi.
A10 — Server-Side Request Forgery (SSRF)
Categoria nuova nel 2021. Il server effettua richieste HTTP verso destinazioni controllate dall’attaccante, permettendo accesso a risorse interne (metadata cloud, endpoint amministrativi, servizi interni non esposti). Approfondita nella voce dedicata SSRF.
Confronto con l’edizione 2017
| 2021 | 2017 | Variazione |
|---|---|---|
| A01 Broken Access Control | A05 | Risalita al primo posto |
| A02 Cryptographic Failures | A03 Sensitive Data Exposure | Rinominata e ampliata |
| A03 Injection | A01 | Sceso dal primo posto |
| A04 Insecure Design | — | Nuova categoria |
| A05 Security Misconfiguration | A06 | Invariata |
| A06 Vulnerable Components | A09 | Risalita |
| A07 Auth Failures | A02 Broken Auth | Rinominata |
| A08 Software Integrity Failures | — | Nuova categoria |
| A09 Logging & Monitoring | A10 | Invariata |
| A10 SSRF | — | Nuova categoria |
Come usare l’OWASP Top 10
L’OWASP Top 10 non è uno standard di sicurezza — è un documento di sensibilizzazione. Non sostituisce un threat model completo né una valutazione di sicurezza approfondita. Va usato come:
- Checklist minima durante la progettazione e il Secure SDLC.
- Base per i requisiti di sicurezza nei capitolati di appalto software.
- Priorità per il Penetration Testing delle applicazioni web.
- Riferimento per la formazione degli sviluppatori.
Progetti che dichiarano “conformità OWASP Top 10” intendono generalmente che l’applicazione è stata testata e non presenta le vulnerabilità nelle dieci categorie — ma la vera conformità richiede un audit formale e non si riduce all’auto-dichiarazione.
Risorse correlate
- Cross-Site Scripting (XSS) — A03 Injection (web)
- SQL Injection — A03 Injection
- CSRF — A01 Broken Access Control (lato sessione)
- XXE — A03 Injection (XML)
- SSRF — A10
- IDOR — A01 Broken Access Control
- Insecure Deserialization — A08
- Penetration Testing
- Secure SDLC