L'Open Application Web Security Project (OWASP) è un'organizzazione no-profit con la missione di migliorare la sicurezza delle applicazioni web. OWASP persegue questa missione fornendo agli sviluppatori l'accesso gratuito a un'ampia gamma di risorse per la sicurezza, tra cui elenchi di vulnerabilità, best practice di sicurezza, sistemi deliberatamente vulnerabili per praticare il web testing delle applicazioni e altro ancora. OWASP ha anche sostenuto lo sviluppo di strumenti di test di sicurezza delle applicazioni e ospita diverse conferenze annuali in tutto il mondo.
OWASP ha sviluppato una serie di risorse che descrivono le vulnerabilità più comuni che esistono in vari sistemi, tra cui applicazioni web, API, dispositivi mobili e altro. La più famosa di queste è la OWASP Top Ten, che descrive le dieci vulnerabilità più comuni e d'impatto che appaiono nelle applicazioni web in produzione. Questo elenco viene aggiornato ogni paio d'anni sulla base di una combinazione di dati di test di sicurezza e di sondaggi condotti tra i professionisti del settore.
La versione più recente dell'elenco OWASP Top 10 è stata pubblicata nel 2021. Questa risorsa fornisce informazioni sulle vulnerabilità più comuni, esempi di ogni tipo, best practice per prevenirle e descrizioni di come la vulnerabilità può essere sfruttata. Inoltre, ogni vulnerabilità include riferimenti alle specifiche CWE (Common Weakness Enumeration) correlate, che descrivono una particolare istanza di vulnerabilità. Ad esempio, l'uso di password hard-coded (CWE-259) rientra nella vulnerabilità Identification and Authentication Failures della OWASP Top Ten List.
La Top Ten di OWASP si basa su una combinazione di analisi dei dati forniti dagli utenti e di un sondaggio tra i professionisti del settore. Sulla base dei dati inviati dalla comunità, il team OWASP determina le prime otto vulnerabilità della sua lista, fornendo visibilità sulle vulnerabilità più comuni nel codice di produzione oggi. Alle organizzazioni è stato chiesto di presentare i CWE riscontrati durante i test e il numero di applicazioni testate che contenevano almeno un'istanza di un CWE. I 400 CWE risultanti sono stati poi analizzati in base all'impatto e alla sfruttabilità e classificati per produrre otto delle dieci categorie principali.
Tuttavia, con l'aggiornamento 2021 dell'elenco, il team di OWASP ha riservato gli ultimi due posti dell'elenco ai suggerimenti provenienti da un sondaggio della comunità. L'obiettivo era quello di riflettere le tendenze più recenti ed emergenti delle vulnerabilità, dove la mancanza di dati o l'impossibilità di testare una vulnerabilità potrebbe far sì che questa venga sottovalutata da un processo che si basa esclusivamente sulle vulnerabilità scoperte durante i test.
L'ultima versione della OWASP Top Ten contiene diverse modifiche rispetto alla versione precedente. L'elenco 2021 comprende le seguenti vulnerabilità:
Di queste, quattro vulnerabilità (4, 8 e 10) sono nuove di zecca, quattro sono rimaste invariate a parte la classificazione, e le restanti consolidano o rinominano le categorie della versione precedente dell'elenco.
I sistemi di controllo degli accessi hanno lo scopo di garantire che solo gli utenti legittimi abbiano accesso ai dati o alle funzionalità. Le vulnerabilità nella categoria del controllo degli accessi non funzionante comprendono qualsiasi problema che consenta a un aggressore di bypassare i controlli degli accessi o che non riesca a implementare il principio del minimo privilegio. Ad esempio, un'applicazione web potrebbe consentire a un utente di accedere all'account di un altro utente modificando l'URL fornito.
Gli algoritmi crittografici sono preziosi per proteggere la privacy e la sicurezza dei dati; tuttavia, questi algoritmi possono essere molto sensibili agli errori di implementazione o di configurazione. I fallimenti crittografici includono il mancato utilizzo della crittografia, la configurazione errata degli algoritmi crittografici e la gestione insicura delle chiavi. Ad esempio, un'organizzazione potrebbe utilizzare un algoritmo di hash insicuro per l'archiviazione delle password, non salare le password o utilizzare lo stesso sale per tutte le password degli utenti archiviate.
Le vulnerabilità di iniezione sono rese possibili dall'incapacità di sanificare correttamente l'input dell'utente prima di elaborarlo. Questo può essere particolarmente problematico in linguaggi come SQL, dove i dati e i comandi sono mescolati, in modo che i dati malformati forniti dall'utente possano essere interpretati come parte di un comando. Ad esempio, SQL utilizza comunemente le virgolette singole (') o doppie (") per delimitare i dati dell'utente all'interno di una query, quindi l'input dell'utente contenente questi caratteri potrebbe essere in grado di modificare il comando in corso di elaborazione.
Le vulnerabilità possono essere introdotte nel software durante il processo di sviluppo in un paio di modi diversi. Mentre molte delle vulnerabilità dell'elenco OWASP Top Ten riguardano errori di implementazione, questa vulnerabilità descrive mancanze nella progettazione che minano la sicurezza del sistema. Ad esempio, se il progetto di un'applicazione che memorizza ed elabora dati sensibili non include un sistema di autenticazione, un'implementazione perfetta del software così come è stato progettato sarà comunque insicura e non riuscirà a proteggere adeguatamente questi dati sensibili.
Oltre alla progettazione e all'implementazione, la sicurezza di un'applicazione è determinata anche da come viene configurata. Un produttore di software avrà delle configurazioni predefinite per la sua applicazione, e gli utenti possono anche attivare o disattivare varie impostazioni, che possono migliorare o compromettere la sicurezza del sistema. Esempi di configurazioni errate della sicurezza possono essere l'abilitazione di applicazioni o porte non necessarie, il lasciare attivi e invariati gli account e le password predefinite, oppure la configurazione dei messaggi di errore che espongono troppe informazioni all'utente.
Le vulnerabilità della catena di approvvigionamento sono emerse come una delle principali preoccupazioni negli ultimi anni, soprattutto perché gli attori delle minacce hanno tentato di inserire codice dannoso o vulnerabile nelle librerie comunemente utilizzate e nelle dipendenze di terze parti. Se un'organizzazione non ha visibilità sul codice esterno che viene utilizzato all'interno della sua applicazione - comprese le dipendenze annidate - e non riesce a scansionarlo per le dipendenze, può essere vulnerabile allo sfruttamento. Inoltre, la mancata applicazione tempestiva degli aggiornamenti di sicurezza a queste dipendenze potrebbe lasciare aperte agli attacchi le vulnerabilità sfruttabili. Ad esempio, un'applicazione può importare una libreria di terze parti che ha le sue dipendenze che potrebbero contenere vulnerabilità sfruttabili note.
Molte applicazioni e sistemi richiedono una qualche forma di identificazione e autenticazione, come ad esempio un utente che dimostra la propria identità a un'applicazione o un server che fornisce un certificato digitale che verifica la sua identità a un utente quando imposta una connessione crittografata TLS. I fallimenti di identificazione e autenticazione si verificano quando un'applicazione si affida a processi di autenticazione deboli o non riesce a convalidare correttamente le informazioni di autenticazione. Ad esempio, un'applicazione priva di autenticazione a più fattori (MFA) potrebbe essere vulnerabile a un attacco di credential stuffing, in cui un aggressore prova automaticamente combinazioni di nome utente e password da un elenco di credenziali deboli, comuni, predefinite o compromesse.
La vulnerabilità Software and Data Integrity Failures nell'elenco OWASP Top 10 riguarda i punti deboli nella sicurezza della pipeline DevOps di un'organizzazione e i processi di aggiornamento del software, simili a quelli che hanno reso possibile l'hack di SolarWinds. Questa classe di vulnerabilità include l'affidamento a codice di terze parti da fonti o repository non attendibili, la mancata protezione dell'accesso alla pipeline CI/CD e la mancata convalida dell'integrità degli aggiornamenti applicati automaticamente. Ad esempio, se un aggressore può sostituire un modulo o una dipendenza fidata con una versione modificata o dannosa, le applicazioni costruite con quella dipendenza potrebbero eseguire codice dannoso o essere vulnerabili allo sfruttamento.
Le carenze nella registrazione e nel monitoraggio della sicurezza sono la prima delle vulnerabilità derivate dalle risposte al sondaggio e sono salite dal decimo posto della precedente edizione dell'elenco. Molti incidenti di sicurezza sono abilitati o esacerbati dal fatto che un'applicazione non registra eventi di sicurezza significativi o che questi file di registro non sono monitorati e gestiti in modo adeguato. Ad esempio, un'applicazione può non generare file di registro, può generare registri di sicurezza che mancano di informazioni critiche, oppure questi file di registro possono essere disponibili solo localmente su un computer, rendendoli utili solo per le indagini dopo che è stato rilevato un incidente. Tutte queste mancanze degradano la capacità di un'organizzazione di rilevare rapidamente un potenziale incidente di sicurezza e di rispondere in tempo reale.
La Server-side request forgery (SSRF) è insolita tra le vulnerabilità elencate nella Top Ten di OWASP, perché descrive una vulnerabilità o un attacco molto specifico piuttosto che una categoria generale. Le vulnerabilità SSRF sono relativamente rare; tuttavia, hanno un impatto significativo se vengono identificate e sfruttate da un aggressore. L'hack di Capital One è un esempio di un recente incidente di sicurezza ad alto impatto che ha sfruttato una vulnerabilità SSRF.
Le vulnerabilità SSRF possono esistere quando un'applicazione web non convalida correttamente un URL fornito da un utente quando recupera una risorsa remota situata in quell'URL. Se questo è il caso, un aggressore che sfrutta la vulnerabilità può utilizzare l'applicazione web vulnerabile per inviare una richiesta creata dall'aggressore all'URL indicato. Ciò consente all'aggressore di aggirare i controlli di accesso, come un firewall, che bloccherebbe le connessioni dirette dell'aggressore all'URL di destinazione, ma che è configurato per fornire l'accesso all'applicazione web vulnerabile.
Le applicazioni web di un'organizzazione sono alcune delle parti più visibili e sfruttabili della sua superficie di attacco digitale. Tuttavia, queste applicazioni contengono comunemente anche vulnerabilità sfruttabili, spesso a causa della mancanza di consapevolezza di queste vulnerabilità e delle migliori pratiche di sicurezza per evitarle. L'elenco OWASP Top Ten è uno sforzo della Fondazione OWASP per affrontare questo problema e ridurre i rischi per la sicurezza web delle applicazioni, attirando l'attenzione su queste vulnerabilità e fornendo risorse che aiutino gli sviluppatori a identificarle, evitarle e porvi rimedio.
La scansione, la correzione e la protezione contro le vulnerabilità descritte nell'elenco OWASP Top Ten è un buon punto di partenza per l'applicazione web DevSecOps. Queste vulnerabilità sono tra le più comuni e ad alto impatto nelle applicazioni web, e la loro visibilità le rende bersagli comuni degli attori delle minacce informatiche.
Poiché le applicazioni si spostano sempre più nel cloud, la protezione dei carichi di lavoro nel cloud è fondamentale per proteggerli dalla Top Ten di OWASP e da altri rischi principali per la sicurezza delle applicazioni. Per maggiori informazioni sulle minacce alla sicurezza della sua applicazione basata sul cloud, consulti questo eBook.
Check Point CloudGuard AppSec offre una protezione completa contro la OWASP Top Ten e altre comuni vulnerabilità web delle applicazioni. Scopra come CloudGuard AppSec può proteggere la sua applicazione cloud con questo whitepaper. Poi, veda di persona le sue capacità iscrivendosi a una demo gratuita.