Che cos’è OWASP?
L’Open Web Application Security Project, o OWASP, è un’organizzazione internazionale senza scopo di lucro dedicata alla sicurezza delle applicazioni web. Uno dei principi fondamentali di OWASP è che tutti i loro materiali siano liberamente disponibili e facilmente accessibili sul loro sito web, rendendo possibile a chiunque di migliorare la propria sicurezza delle applicazioni web. I materiali che offrono includono documentazione, strumenti, video e forum. Forse il loro progetto più noto è l’OWASP Top 10.
Qual è il OWASP Top 10?,
Il OWASP Top 10 è un rapporto regolarmente aggiornato che delinea i problemi di sicurezza per la sicurezza delle applicazioni web, concentrandosi sui 10 rischi più critici. Il rapporto è messo insieme da un team di esperti di sicurezza provenienti da tutto il mondo. OWASP si riferisce alla Top 10 come un “documento di sensibilizzazione” e raccomanda a tutte le aziende di incorporare il report nei loro processi al fine di ridurre al minimo e/o mitigare i rischi per la sicurezza.
Di seguito sono riportati i rischi per la sicurezza riportati nel rapporto OWASP Top 10 2017:
1., Injection
Gli attacchi Injection si verificano quando i dati non attendibili vengono inviati a un interprete di codice tramite un input di modulo o qualche altro invio di dati a un’applicazione Web. Ad esempio, un utente malintenzionato potrebbe inserire il codice del database SQL in un modulo che prevede un nome utente in chiaro. Se l’input del modulo non è protetto correttamente, ciò comporterebbe l’esecuzione del codice SQL. Questo è noto come attacco SQL injection.
Gli attacchi di iniezione possono essere prevenuti convalidando e / o sanificando i dati inviati dall’utente., (Convalida significa rifiutare i dati dall’aspetto sospetto, mentre la sanificazione si riferisce alla pulizia delle parti dall’aspetto sospetto dei dati.) Inoltre, un amministratore di database può impostare controlli per ridurre al minimo la quantità di informazioni che un attacco di iniezione può esporre.
2. Autenticazione interrotta
Le vulnerabilità nei sistemi di autenticazione (login) possono consentire agli aggressori di accedere agli account utente e persino di compromettere un intero sistema utilizzando un account amministratore., Ad esempio, un utente malintenzionato può prendere un elenco contenente migliaia di combinazioni note di nome utente/password ottenute durante una violazione dei dati e utilizzare uno script per provare tutte quelle combinazioni su un sistema di accesso per vedere se ce ne sono che funzionano.
Alcune strategie per mitigare le vulnerabilità di autenticazione richiedono l’autenticazione a due fattori (2FA) e limitano o ritardano i tentativi di accesso ripetuti utilizzando la limitazione della velocità.
3., Esposizione ai dati sensibili
Se le applicazioni web non proteggono i dati sensibili come le informazioni finanziarie e le password, gli aggressori possono accedere a tali dati e sellor utilizzarli per scopi nefasti. Un metodo popolare per rubare informazioni sensibili sta usando un attacco sul percorso.
Il rischio di esposizione ai dati può essere ridotto al minimo crittografando tutti i dati sensibili e disabilitando la memorizzazione nella cache* di qualsiasi informazione sensibile. Inoltre, gli sviluppatori di applicazioni Web dovrebbero fare attenzione a garantire che non memorizzino inutilmente dati sensibili.,
*Il caching è la pratica di memorizzare temporaneamente i dati per il riutilizzo. Ad esempio, i browser web spesso cache pagine Web in modo che se un utente rivisita thosepages entro un intervallo di tempo fisso, il browser non deve recuperare le pagine dal web.
4. XML External Entities (XEE)
Questo è un attacco contro un’applicazione web che analizza l’input XML*. Questo input può fare riferimento a un’entità esterna, tentando di sfruttare una vulnerabilità nel parser. Un ‘entità esterna’ in questo contesto si riferisce a un’unità di archiviazione, ad esempio un disco rigido., Un parser XML può essere ingannato nell’invio di dati a un’entità esterna non autorizzata, che può passare dati sensibili direttamente a un utente malintenzionato.
I modi migliori per prevenire gli attacchi XEE sono di avere applicazioni web accettare un tipo meno complesso di dati, come JSON**, o per lo meno di patch parser XML e disabilitare l’uso di entità esterne in un’applicazione XML.
*XML o Extensible Markup Language è un linguaggio di markup destinato ad essere sia leggibile dall’uomo e leggibile dalla macchina. A causa della sua complessità e vulnerabilità di sicurezza, è ora in fase di graduale fuori uso in molte applicazioni web.,
**JavaScript Object Notation (JSON) è un tipo di notazione semplice e leggibile spesso usato per trasmettere dati su Internet. Sebbene sia stato originariamente creato per JavaScript, JSON è indipendente dal linguaggio e può essere interpretato da molti linguaggi di programmazione diversi.
5. Controllo di accesso rotto
Controllo di accesso si riferisce a un sistema che controlla l’accesso a informazioni o funzionalità. I controlli di accesso interrotti consentono agli aggressori di ignorare l’autorizzazione ed eseguire attività come se fossero utenti privilegiati come gli amministratori., Ad esempio, un’applicazione Web potrebbe consentire a un utente di modificare l’account in cui ha effettuato l’accesso semplicemente modificando parte di un URL, senza alcuna altra verifica.
I controlli di accesso possono essere protetti assicurando che un’applicazione Web utilizzi token di autorizzazione* e imposta controlli rigorosi su di essi.
* Molti servizi emettono token di autorizzazione quando gli utenti accedono. Ogni richiesta privilegiata che un utente fa richiederà che il token di autorizzazione sia presente. Questo è un modo sicuro per garantire che l’utente è chi dicono di essere, senza dover inserire costantemente le proprie credenziali di accesso.
6., Errore di configurazione della sicurezza
L’errore di configurazione della sicurezza è la vulnerabilità più comune nell’elenco ed è spesso il risultato dell’utilizzo di configurazioni predefinite o della visualizzazione di errori eccessivamente dettagliati. Ad esempio, un’applicazione potrebbe mostrare a un utente errori eccessivamente descrittivi che potrebbero rivelare vulnerabilità nell’applicazione. Questo può essere mitigato rimuovendo tutte le funzionalità inutilizzate nel codice e assicurando che i messaggi di errore siano più generali.
7., Cross-Site Scripting
Le vulnerabilità cross-site scripting si verificano quando le applicazioni Web consentono agli utenti di aggiungere codice personalizzato in un percorso url o su un sito Web che verrà visualizzato da altri utenti. Questa vulnerabilità può essere sfruttata per eseguire codice JavaScript dannoso sul browser di una vittima. Ad esempio, un utente malintenzionato potrebbe inviare un’e-mail a una vittima che sembra provenire da una banca attendibile, con un link al sito Web di tale banca. Questo link potrebbe avere un codice JavaScript dannoso etichettato alla fine dell’url., Se il sito della banca non è adeguatamente protetto contro lo scripting cross-site, allora quel codice dannoso verrà eseguito nel browser web della vittima quando fanno clic sul link.
Le strategie di mitigazione per lo scripting cross-site includono l’evasione di richieste HTTP non attendibili e la convalida e / o la sanificazione dei contenuti generati dagli utenti. L’utilizzo di moderni framework di sviluppo Web come ReactJS e Ruby on Rails fornisce anche una protezione di scripting cross-site integrata.
8. Deserializzazione insicura
Questa minaccia si rivolge alle numerose applicazioni web che spesso serializzano e deserializzano i dati., Serializzazione significa prendere oggetti dal codice dell’applicazione e convertirli in un formato che può essere utilizzato per un altro scopo, ad esempio la memorizzazione dei dati su disco o lo streaming. La deserializzazione è esattamente l’opposto: convertire i dati serializzati in oggetti che l’applicazione può utilizzare. La serializzazione è un po ‘ come imballare i mobili in scatole prima di una mossa, e la deserializzazione è come disimballare le scatole e assemblare i mobili dopo la mossa. Un attacco di deserializzazione insicuro è come avere i motori manomettere il contenuto delle scatole prima che vengano decompressi.,
Un exploit di deserializzazione non sicuro è il risultato della deserializzazione dei dati da fonti non attendibili e può comportare gravi conseguenze come attacchi DDoS e attacchi di esecuzione di codice remoto. Mentre è possibile adottare misure per cercare di catturare gli aggressori, come il monitoraggio della deserializzazione e l’implementazione dei controlli di tipo, l’unico modo sicuro per proteggersi dagli attacchi di deserializzazione non sicuri è vietare la deserializzazione dei dati provenienti da fonti non attendibili.
9., Utilizzo di componenti con vulnerabilità note
Molti sviluppatori Web moderni utilizzano componenti come librerie e framework nelle loro applicazioni Web. Questi componenti sono pezzi di software che aiutano gli sviluppatori a evitare il lavoro ridondante e forniscono le funzionalità necessarie; esempio comune includono framework front-end come React e librerie più piccole che utilizzate per aggiungere icone di condivisione o test a/b. Alcuni aggressori cercano vulnerabilità in questi componenti che possono quindi utilizzare per orchestrare gli attacchi., Alcuni dei componenti più popolari sono utilizzati su centinaia di migliaia di siti web; un utente malintenzionato trovare un buco di sicurezza in uno di questi componenti potrebbe lasciare centinaia di migliaia di siti vulnerabili da sfruttare.
Gli sviluppatori di componenti spesso offrono patch di sicurezza e aggiornamenti per collegare le vulnerabilità note, ma gli sviluppatori di applicazioni Web non hanno sempre le versioni patchate o più recenti dei componenti in esecuzione sulle loro applicazioni., Per ridurre al minimo il rischio di eseguire componenti con vulnerabilità note, gli sviluppatori dovrebbero rimuovere i componenti inutilizzati dai loro progetti, oltre a garantire che ricevano componenti da una fonte attendibile e assicurino che siano aggiornati.
10. Registrazione e monitoraggio insufficienti
Molte applicazioni Web non stanno adottando misure sufficienti per rilevare le violazioni dei dati. Il tempo medio di scoperta per una violazione è di circa 200 giorni dopo che è accaduto. Questo dà attaccanti un sacco di tempo per causare danni prima che ci sia alcuna risposta., OWASP raccomanda agli sviluppatori Web di implementare la registrazione e il monitoraggio e piani di risposta agli incidenti per garantire che siano consapevoli degli attacchi alle loro applicazioni.
Per uno sguardo più tecnico e approfondito alla Top 10 di OWASP, vedi il report ufficiale .