
Le 10 vulnerabilità Web più importanti secondo OWASP
L'OWASP (Open Web Application Security Project) è una fondazione senza fini di lucro che lavora per migliorare la sicurezza del software. Il suo documento denominato "OWASP Top 10" è il riferimento principale per gli sviluppatori che vogliono rendere sicure le loro applicazioni web.
Il documento, infatti, contiene le 10 più frequenti e pericole sorgenti di vulnerabilità, che possono essere risolte utilizzando comportamenti corretti e uno sviluppo consapevole.
Vediamoli nel dettaglio:
- Injection: l'injection flaws è l'attacco per cui un malintenzionato esegue dei comandi a suo piacimento inserendoli come parte di un altro comando che viene inviato all'interprete in carico di processarlo. Tra i più famosi c'è la cosiddetta SQL Injection, che permette di lanciare query sul database a scelta del malintenzionato, concatenandole in qualche forma ad altre query legittime.
- Broken Authentication: l'autenticazione sul web è gestita mediante cookies e sessioni. La loro applicazione è spesso implementata in maniera scorretta e permette quindi ad un pirata informatica di ottenere passowordi chiavi o nomi utente o di loggarsi come fosse un altro utente temporaneamente o permanentemente.
- Sensitive Data Exposure: molte applicazioni web ed API non proteggono opportunamente le informazioni sensibili che conservano e ne permettono l'accesso a chiunque conosca l'url o sia in grado di indovinarlo, intercetti la comunicazione o modifichi la richiesta al server.
- XML External Entities (XXE): molti vecchi o mal configurati interpreti XML processano le entità esterne dichiarate all'interno dell'XML stesso, permettendo così l'accesso a file o porzioni di memoria riservate o l'esecuzione di altri comandi o tipo di attacco.
- Broken Access Control: ogni utente loggato dovrebbe avere delle restrizioni sulle funzioni che può eseguire e sui dati su cui può operare. Spesso queste restrizioni non vengono implementate correttamente e permetteono ad un utente limitato di lanciare comandi di utenti privilegiati e di accedere o modificare dati di cui non sono proprietari.
- Security Misconfiguration: i web server a cui si appoggiano i servizi sono spesso mal configurati e forniscono informazioni sensibili o sfruttabili, aprendo le porte a possibili attacchi. Inoltre, sono spesso poco aggiornati.
- Cross-Site Scripting XSS: ogni qual volta un utente esterno (loggato o no) può inserire del testo all'interno di un sito, questo testo andrebbe controllato e sanificato. Se per esempio inserisce dei javascript eseguibili, questi verranno lanciati sui computer dei visitatori nel momento in cui questi leggono il suo messaggio. Attraverso questi javascript possono accedere alla memoria del visitatore e sottrarre informazioni sensibili, password o cookies, possono eseguire comandi sul browser o possono alterare il comportamento della pagina, redirigendo ad esempio l'utente su una falsa pagina di login che può essere usata per rubare le credenziali di accesso.
- Insecure Deserialization: il processo denominato serializzazione è quello per cui un oggetto viene convertito in una forma salvabile (es. una stringa). La deserializzazione, invece, è il processo inverso che prende una stringa e la trasforma in un oggetto. Se si effettua la deserializzazione su input non affidabili, questi possono contenere codice utilizzabile per eseguire ulteriori attacchi come replay attacks, injection attacks and privilege escalation attacks.
- Using Components with Known Vulnerabilities. Tutti i componenti inseriti un'applicazione web vengono lanciati con gli stessi permessi dell'applicazione web stessa. Se questi sono quindi vulnerabili possono essere utilizzati come ponte per attacchi mirati all'applicazione web stessa e ai suoi dati.
- Insufficient Logging & Monitoring. Un utilizzo insufficiente dei log e il loro scarso monitoraggio, permettono spesso agli attaccanti di restare nascosti e continuare ad operare per centinaia di giorni prima che vengano scoperti.
Quelle esposte sono solo alcuni dei rischi che si possono annidare nello sviluppo di applicazioni web e se ne potrebbero aggiungere altri, quali ad ad esempio il noto "directory traversal attack".
Per maggiori informazioni anche su come capire se si è vulnerabili a uno degli attacchi possibili, si può visitare il sito OWASP ed in particolare la pagina dedicata ai top 10.