Nel mondo dello sviluppo di software e applicazioni stanno avendo sempre maggiore diffusione i principi e le tecniche OWASP.
Non sai ancora cosa sono? Non ti preoccupare: te lo spiego subito!
OWASP è un acronimo che sta per Open Web Application Security Project.
Si tratta dunque di un progetto, di un’iniziativa nata con lo scopo di divulgare i principi del codice sicuro nelle fasi di sviluppo di un software.
Vediamo meglio insieme di che cosa si tratta e perché uno sviluppatore dovrebbe conoscerlo.
Che cos’è OWASP?
Come ti ho anticipato, OWASP è un’iniziativa open-source internazionale no-profit nata nel 2001 con lo scopo di realizzare una serie di linee guida ma anche di strumenti pratici, utili a supportare i web developer nello sviluppo sicuro di web application.
Trattandosi di un progetto open source, tutte le risorse messe a disposizione della community sono liberamente consultabili da chiunque voglia mettere la sicurezza al centro del suo progetto di sviluppo.
Quali sono i principi di OWASP?
Le tecniche e i principi definiti da OWASP stanno diventando delle best practices riconosciute a livello internazionale per la prevenzione delle vulnerabilità informatiche.
Tramite l’applicazione sistematica di queste procedure lo sviluppatore può ridurre considerevolmente il rischio di data breach (violazione/perdita di dati) causati da attacchi hacker e agevolati da una scarsa qualità del codice.
Si tratta per il momento di indicazioni facoltative, ma in diversi contesti si sta cercando di renderle obbligatorie per lo sviluppo web.
Un passo in avanti in questo senso si è avuto con l’adozione del GDPR (Regolamento generale per la protezione dei dati personali) che richiede il rispetto della protezione dei dati fin dalla progettazione di un software, secondo il principio di privacy by design.
Veniamo dunque agli aspetti più concreti: quali sono i principi fondamentali di OWASP?
Classificazione delle minacce ovvero “Conosci il tuo nemico”
“Se conosci il nemico e te stesso, la tua vittoria è sicura.”
Questa citazione tratta da “L’arte della guerra” di Sun Tzu, celebre generale e filosofo cinese, ci aiuta a capire che il processo di identificazione e classificazione delle potenziali minacce informatiche sia fondamentale in ottica di sviluppo sicuro.
Infatti quest’analisi permette di costruire sin dalle fondamenta applicazioni sicure proprio perché tiene in considerazione quali sono le tecniche di attacco e quali i bersagli più facilmente raggiungibili e dunque meritevoli di maggiore protezione.
Secondo OWASP, la classificazione delle minacce deve seguire un approccio basato su diversi punti, tra i quali sottolineiamo:
- Suddivisione dell’applicazione
Analizzare pezzo per pezzo l’applicazione è fondamentale per capire la funzione di ogni singola parte e la sua interazione con entità esterne.
Ciò consente di trovare:
– i punti accesso tramite i quali un potenziale attaccante potrebbe interagire con l’applicativo
– identificare gli assets e le aree verso i quali l’attaccante possa sentirsi attratto
– classificare i livelli di sicurezza (e dunque i permessi di accesso) che l’applicazione dovrà assegnare alle entità esterne - Individuazione delle contromisure e mitigazioni
Lo step logico immediatamente successivo all’identificazione dei punti deboli e delle minacce è sicuramente quello delle contromisure.
Ogni minaccia deve essere associata ad una specifica contromisura che, se non in grado di eliminare completamente il rischio, possa quanto meno mitigarlo.
Revisione della sicurezza del codice ovvero “Il diavolo sta nei particolari”
Quando parliamo di revisione del codice (code review) ci riferiamo al processo di ispezione manuale del codice sorgente di un’applicazione per verificare eventuali problemi di sicurezza.
Analizzando il codice sorgente, lo sviluppatore tester esamina ogni riga di codice del software per verificare che i controlli di sicurezza siano presenti ed effettivi e classifica accuratamente qualsiasi tipo di vulnerabilità rilevata.
Il code review permette di riscontrare per esempio delle problematiche relative alla crittografia, al controllo degli accessi, ai malware, etc.
Ispezioni e revisioni manuali ovvero “Il fattore umano”
Si tratta di controlli tipicamente “umani” volti a verificare la percezione che un soggetto ha di una determinata applicazione e del suo funzionamento.
Chiedendo a qualcuno come funziona qualcosa e perché lo ha implementato in un modo specifico, lo sviluppatore addetto alla verifica manuale può determinare rapidamente se è probabile che si verifichino problemi di sicurezza.
Le revisioni manuali sono particolarmente utili per verificare se le persone comprendono il processo di sicurezza, sono state informate delle policy a riguardo e hanno le competenze appropriate per progettare o implementare applicazioni sicure.
Penetration Test ovvero “Nei panni di un hacker”
Il Penetration Test (anche detto Pen Test) permette di testare il livello di sicurezza di un sistema informativo o di una web application tramite una simulazione di un attacco hacker.
Lo sviluppatore agisce come un attaccante e tenta di trovare e sfruttare le vulnerabilità.
Chiaramente l’intrusore, tramite la sua azione, contribuisce a identificare solo un piccolo campione rappresentativo di tutti i possibili rischi per la sicurezza in un sistema.
Ne consegue che il Pen Test da solo non possa essere l’unico strumento da utilizzare.
Tuttavia i Pen Test mirati, ovvero i test che tentano di sfruttare le vulnerabilità note rilevate nelle revisioni precedenti, possono essere utili per capire se alcune vulnerabilità specifiche sono state effettivamente corrette nel codice sorgente distribuito.
Che cos’è la OWASP Top 10?
Tra le diverse indicazioni in tema di cyber security che emergono dalla community OWASP, c’è anche una lista, resa pubblica per la prima volta nel 2003 con lo scopo di sensibilizzare gli sviluppatori sui pericoli più importanti che minacciano applicazioni e software.
Stiamo parlando della celebre OWASP Top 10.
Passiamo in rassegna brevemente i punti della lista.
Injection (letteralmente “iniezione di codice”)
Le injection come la SQL injection, l’LDAP injection e la CRLF injection si verificano quando dati non attendibili vengono trasmessi da un software all’altro.
I dati ostili dell’aggressore possono indurre il software-vittima a eseguire comandi involontari o ad accedere ai dati senza un’adeguata autorizzazione.
Autenticazione interrotta
Qualora le funzioni dell’applicazione relative all’autenticazione e alla gestione delle sessioni non siano sviluppate correttamente l’hacker può rubare password, token di sessione, cookie allo scopo di impersonare altri utenti e prendere il controllo del sistema..
Esposizione di dati sensibili
I dati sensibili richiedono una protezione maggiore (per esempio tramite crittografia) rispetto a dati di minore importanza.
Purtroppo molte applicazioni Web e API non proteggono adeguatamente i dati sensibili, permettendo ai cybercriminali di rubarli e metterli in commercio.
Controllo degli accessi interrotti
Le restrizioni su ciò che gli utenti autenticati possono fare spesso non vengono applicate correttamente.
Gli aggressori possono sfruttare questi difetti di programmazione per accedere a funzionalità e a dati non autorizzati, accedere agli account di altri utenti, visualizzare dati sensibili, modificare i dati di altri utenti, modificare i diritti di accesso, ecc.
Configurazione errata della sicurezza
L’errata configurazione della sicurezza è di certo il problema più comune.
Spesso è il risultato di configurazioni predefinite non sicure o configurazioni incomplete.
Va ricordato che non solo tutti i sistemi operativi, i framework, le librerie e le applicazioni devono essere configurati in modo sicuro, ma devono essere anche aggiornati in modo tempestivo.
Cross-Site Scripting (XSS)
Si tratta di una vulnerabilità che viene sfruttata dagli attaccanti per introdurre codice “malevolo” nel browser della vittima al fine di dirottare le sessioni dell’utente, deturpare siti web o reindirizzare l’utente verso siti pericolosi.
Deserializzazione insicura
La deserializzazione non sicura porta spesso all’esecuzione di codice in modalità remota.
Anche se i problemi di deserializzazione non comportano l’esecuzione di codice in modalità remota, possono essere utilizzati per eseguire attacchi, inclusi attacchi di riproduzione, attacchi di iniezione e attacchi di escalation di privilegi.
Utilizzo di componenti con vulnerabilità note
Le applicazioni e le API che utilizzano componenti con vulnerabilità note possono minare le difese delle applicazioni e consentire attacchi di gravissima portata.
Registrazione e monitoraggio insufficienti
Il mancato monitoraggio e la mancata integrazione di processi di incident response consente agli aggressori di attaccare i sistemi e di rimanervi a lungo con lo scopo di manomettere, estrarre o distruggere i dati.
La maggior parte degli studi sulle violazioni dimostra che il tempo necessario per rilevare una violazione supera i 200 giorni e che generalmente la violazione viene rilevata da parti esterne piuttosto che da processi di monitoraggio interno.
Sospetti che qualcuno abbia violato il tuo sito?
C’è qualcosa che non funziona più come prima?
Probabilmente sei già stato vittima di un attacco senza nemmeno saperlo.
1 comment
Comments are closed.