Perche l'OWASP Top 10 e Importante per la Tua Azienda
L'Open Web Application Security Project (OWASP) pubblica la sua lista Top 10 circa ogni tre-quattro anni. Rappresenta un ampio consenso sui rischi di sicurezza piu critici che affrontano le applicazioni web. Se gestisci un sito web o un'applicazione web che tratta qualsiasi tipo di dati utente, transazioni clienti o processi aziendali interni, questa lista e la tua baseline.
L'OWASP Top 10 non e solo un esercizio accademico. E referenziato da auditor, framework di conformita (PCI DSS, ad esempio, lo menziona esplicitamente) e penetration tester in tutto il mondo. Quando un professionista della sicurezza esegue una valutazione, l'OWASP Top 10 e quasi sempre parte della checklist.
Analizzeremo ogni categoria con esempi reali, spiegheremo perche ogni vulnerabilita esiste e vi daremo passi concreti per risolverla o prevenirla. Per una visione piu ampia su come verificare la postura di sicurezza del vostro sito, consultate la nostra checklist di audit sicurezza del sito web.
A01:2021 - Broken Access Control (Controllo Accessi Insufficiente)
Il controllo accessi insufficiente e salito al primo posto nell'edizione 2021, rispetto al quinto posto precedente. Si riferisce a situazioni in cui gli utenti possono agire al di fuori dei permessi previsti.
Come Si Presenta
Considerate un'applicazione web dove la visualizzazione del proprio profilo e a /api/users/1234/profile. Cosa succede se cambiate quell'ID in /api/users/1235/profile? Se potete vedere i dati di un altro utente, si tratta di broken access control. Questo pattern specifico si chiama Insecure Direct Object Reference (IDOR).
Altri esempi:
- Un utente normale che accede a pannelli di amministrazione navigando direttamente a
/admin - Un'API che non verifica se l'utente autenticato ha il permesso di modificare la risorsa richiesta
- Manipolazione dei metadati, come alterare un token JWT per elevare i privilegi
- Configurazione CORS errata che permette accesso API non autorizzato da origini malevole
Impatto nel Mondo Reale
Nel 2019, un ricercatore scopri che l'API di un'importante istituzione finanziaria americana permetteva a qualsiasi utente autenticato di visualizzare i dettagli del conto di qualsiasi altro cliente semplicemente cambiando il numero di conto nell'URL. Milioni di record dei clienti furono esposti prima che la correzione fosse implementata.
Mitigazione
- Nega per default. Ogni endpoint dovrebbe richiedere autorizzazione esplicita.
- Implementa controlli di accesso lato server. Non affidarti mai all'occultamento degli elementi UI.
- Usa riferimenti oggetto indiretti. Invece di esporre ID del database nelle URL, usa token casuali o UUID.
- Registra i fallimenti del controllo accessi. Crea alert per fallimenti ripetuti dallo stesso utente.
- Limita l'accesso API per minimizzare i danni da attacchi di enumerazione automatizzati.
A02:2021 - Cryptographic Failures (Fallimenti Crittografici)
Precedentemente chiamata "Esposizione di Dati Sensibili," questa categoria e stata rinominata per focalizzarsi sulla causa radice: fallimenti nella crittografia che portano all'esposizione dei dati.
Come Si Presenta
- Password archiviate in testo semplice o con algoritmi di hashing deboli (MD5, SHA-1 senza salt)
- Dati sensibili trasmessi via HTTP invece di HTTPS
- Versioni TLS obsolete (TLS 1.0, 1.1)
- Chiavi di cifratura hardcoded nel codice sorgente
- Cifrari deprecati o deboli
Mitigazione
- Usa hashing forte e moderno per le password: bcrypt, scrypt, o Argon2id. Mai MD5 o SHA semplice.
- Imponi TLS 1.2 o superiore per tutte le connessioni. Consulta la nostra guida agli header di sicurezza per la configurazione HSTS.
- Cifra i dati sensibili a riposo. Usa AES-256 per la cifratura simmetrica.
- Gestisci le chiavi correttamente. Usa un servizio di gestione chiavi (AWS KMS, HashiCorp Vault).
- Classifica i tuoi dati. Sappi quali dati sono sensibili e applica le protezioni appropriate.
A03:2021 - Injection (Iniezione)
L'injection e stata il rischio numero uno per anni e rimane criticamente importante. Si verifica quando dati non affidabili vengono inviati a un interprete come parte di un comando o query.
Come Si Presenta
La forma piu nota e l'SQL injection. Considerate questo codice:
const query = "SELECT * FROM users WHERE username = '" + userInput + "'";
Se userInput e admin' OR '1'='1, la query diventa:
SELECT * FROM users WHERE username = 'admin' OR '1'='1'
Questo restituisce tutti gli utenti. Un attaccante potrebbe anche usare '; DROP TABLE users; -- per eliminare l'intera tabella.
Mitigazione
- Usa query parametrizzate (prepared statement). Questa e la difesa primaria.
- Usa un ORM come Prisma, Sequelize, o TypeORM.
- Valida e sanifica l'input.
- Applica il principio del minimo privilegio. L'utente database della tua applicazione dovrebbe avere solo i permessi necessari.
A04:2021 - Insecure Design (Progettazione Insicura)
Questa e una nuova categoria nell'edizione 2021. Evidenzia difetti di progettazione fondamentali che non possono essere risolti con una migliore implementazione.
Mitigazione
- Threat modeling. Prima di scrivere codice, identifica cosa potrebbe andare storto.
- Stabilisci pattern di progettazione sicuri.
- Scrivi casi di abuso insieme ai casi d'uso. Per ogni funzionalita, chiediti "come potrebbe qualcuno abusarne?"
- Limita il consumo di risorse a livello di progettazione.
A05:2021 - Security Misconfiguration (Configurazione di Sicurezza Errata)
Questo e il problema piu comunemente riscontrato. Copre tutto, dalle credenziali predefinite alle funzionalita non necessarie lasciate attive, header di sicurezza mancanti, CORS troppo permissivo e messaggi di errore troppo dettagliati.
Mitigazione
- Implementa un processo di hardening.
- Usa infrastructure as code. Strumenti come Terraform garantiscono configurazioni consistenti e controllate.
- Configura scansioni automatizzate.
- Implementa header di sicurezza appropriati. La nostra guida agli header di sicurezza copre questo in dettaglio.
A06:2021 - Vulnerable and Outdated Components (Componenti Vulnerabili e Obsoleti)
Le applicazioni web moderne dipendono da decine o centinaia di librerie e framework di terze parti. Se uno qualsiasi di questi componenti ha vulnerabilita note, la tua applicazione le eredita.
Impatto nel Mondo Reale
La violazione di Equifax del 2017, che espose 147 milioni di record, fu causata da una vulnerabilita non corretta di Apache Struts. La patch era disponibile da due mesi prima della violazione.
Mitigazione
- Mantieni un inventario di tutti i componenti e le loro versioni.
- Usa scansione automatizzata delle dipendenze. GitHub Dependabot, Snyk, o npm audit.
- Rimuovi le dipendenze inutilizzate.
- Abbi un processo di patch management. Le patch di sicurezza critiche dovrebbero essere applicate entro giorni, non mesi.
A07:2021 - Identification and Authentication Failures (Fallimenti di Identificazione e Autenticazione)
Copre le debolezze nel modo in cui le applicazioni verificano l'identita e gestiscono le sessioni.
Mitigazione
- Implementa l'autenticazione multi-fattore (MFA).
- Imponi policy password forti. Minimo 12 caratteri. Controlla contro liste di password violate.
- Limita i tentativi di login.
- Usa gestione sessioni sicura. Genera token di sessione lunghi e casuali con scadenza appropriata.
A08:2021 - Software and Data Integrity Failures
Questa nuova categoria copre situazioni in cui codice e infrastruttura non proteggono contro violazioni dell'integrita, incluse pipeline CI/CD insicure e deserializzazione insicura.
Impatto nel Mondo Reale
L'attacco SolarWinds nel 2020 fu un esempio da manuale. Gli attaccanti compromisero il sistema di build, iniettando una backdoor distribuita a circa 18.000 organizzazioni attraverso un aggiornamento software di routine.
Mitigazione
- Usa firme digitali per verificare l'integrita del software.
- Implementa Subresource Integrity (SRI) per script di terze parti.
- Proteggi la tua pipeline CI/CD.
- Usa lock file e verifica i checksum delle dipendenze.
A09:2021 - Security Logging and Monitoring Failures
Se non riesci a vedere cosa succede nella tua applicazione, non puoi rilevare attacchi in corso.
Mitigazione
- Registra tutti gli eventi di autenticazione.
- Centralizza i log. Inviali a un servizio separato.
- Configura alert per pattern che indicano attacchi.
- NON registrare dati sensibili. Password e numeri di carta di credito non devono mai apparire nei log.
A10:2021 - Server-Side Request Forgery (SSRF)
SSRF e nuova nella Top 10 del 2021. Si verifica quando un'applicazione web recupera una risorsa remota senza validare l'URL fornito dall'utente.
Impatto nel Mondo Reale
La violazione di Capital One del 2019, che espose 100 milioni di record clienti, coinvolse SSRF come componente chiave. L'attaccante sfrutto un WAF mal configurato per eseguire SSRF contro il servizio metadata AWS.
Mitigazione
- Valida e sanifica tutti gli URL forniti dal client. Blocca le richieste a range IP privati e endpoint metadata cloud.
- Usa allowlist.
- Disabilita schemi URL non necessari.
- Su piattaforme cloud, usa IMDSv2 (su AWS).
Un Percorso Pratico di Sicurezza
Fase 1: Vittorie Rapide (Questa Settimana)
- Implementa header di sicurezza
- Abilita HTTPS ovunque e disabilita vecchie versioni TLS
- Aggiorna tutte le dipendenze
- Configura scansione automatizzata delle dipendenze
- Rimuovi credenziali predefinite o applicazioni di esempio
Fase 2: Correzioni Fondamentali (Questo Mese)
- Verifica tutte le query database per vulnerabilita di injection
- Rivedi la logica di controllo accessi su tutti gli endpoint
- Implementa rate limiting sugli endpoint di autenticazione
- Configura logging centralizzato con alert per eventi di sicurezza
- Aggiungi MFA almeno per gli account admin
Fase 3: Sicurezza Approfondita (Questo Trimestre)
- Conduci una revisione approfondita del codice
- Implementa test di sicurezza nella pipeline CI/CD
- Crea e pratica un piano di risposta agli incidenti
- Esegui un penetration test
L'OWASP Top 10 e il Pavimento, Non il Soffitto
Queste dieci categorie rappresentano i rischi piu comuni e impattanti, ma sono lontane dall'essere un quadro completo della sicurezza applicativa. Sono la baseline minima.
Se non sei sicuro di dove si trova la tua applicazione rispetto a queste vulnerabilita, un audit di sicurezza professionale puo darti un quadro chiaro. A Envestis, aiutiamo le aziende a Lugano e in tutta la Svizzera a identificare e correggere queste vulnerabilita prima che gli attaccanti le trovino. Contatta il nostro team per discutere le tue esigenze di sicurezza.
Vuoi sapere se il tuo sito è sicuro?
Richiedi un audit di sicurezza gratuito. In 48 ore ricevi un report completo.
Richiedi Audit Gratuito