Questo che sto per descrivervi è un evento che accadeva spesso anni fa ma adesso, per fortuna, è diventato piuttosto raro: siamo su un portale web che raccoglie recensioni di film e vogliamo cercarne una su “L’uomo che sapeva troppo”. Individuiamo il motore di ricerca interno del portale, inseriamo “migliori film dell’anno” nel campo a disposizione e clicchiamo sul pulsante “cerca”.
A questo punto, il nostro browser riporta una strana pagina di risposta in cui ci sono parti riconoscibili del portale ma sono formattate male, pezzi di linguaggio di programmazione… Cos’è successo?
Se anziché cercare un altro portale di film, ci soffermassimo su quello strano evento, con l’aiuto di Google potremmo scoprire che a causare quel disservizio è stato un carattere contenuto nella stringa “L’uomo che sapeva troppo”: l’apostrofo. In un linguaggio di programmazione l’apostrofo (o apice) può avere un’importanza enorme e se lo script che gestisce la ricerca all’interno del portale in questione non tiene conto di questa possibilità, allora quello script e il modulo che governa sono vulnerabili.
Nella pratica cosa significa vulnerabile? Significa che quel modulo può essere utilizzato per inserire codice malevolo che potrebbe pregiudicare la funzionalità del portale o peggio, esporre tutti i dati degli altri utenti registrati in esso.
Al giorno d’oggi esistono molti strumenti che cercano di ripetere l’evento sopra descritto. Solitamente è sufficiente fornirgli l’indirizzo del sito web da analizzare: lo strumento naviga tra le pagine del sito alla ricerca di un modulo da attaccare e, se lo trova, tenta di inserirvi parti di codice. Se riceve una risposta nota, allora segnala quella pagina come “vulnerabile”. Purtroppo, però, quella dell’esempio è una delle vulnerabilità più classiche; ne esistono migliaia di altre e quotidianamente ne escono sempre di nuove. Allo stesso modo, anche i tool utilizzati per scovare queste vulnerabilità un giorno sono funzionali, il giorno dopo inutili perché obsoleti.
E allora? Per fortuna esistono strumenti gratuiti come OWASP ZAP (Zed Attack Proxy), un tool creato seguendo i principi della Fondazione OWASP (Open Web Application Security Project) al fine di offrire a tutti la possibilità di poter analizzare le proprie applicazioni e siti web, rendendoli più sicuri.
ZAP è uno strumento alla portata di tutti, dall’utente più inesperto al professionista del settore; è open-source e contiene la maggioranza delle vulnerabilità tuttora presenti e viene aggiornato costantemente da una community dedicata.
Installazione
Come detto, ZAP è open-source, per cui è gratuitamente scaricabile a questo link (https://www.zaproxy.org/download/); l’unico prerequisito che richiede è la presenza di Java 8+ con cui far funzionare tutti i suoi moduli. Una delle sue peculiarità è proprio quella di essere disponibile per molte tipologie di piattaforma e sistemi operativi, ed è addirittura disponibile una versione utilizzabile su Raspberry.
Una volta scaricato, la procedura di installazione è davvero semplice ed intuitiva.
Funzionamento
ZAP È principalmente un proxy ed infatti al suo interno immagazzina tutti i dati provenienti dal sito che stiamo analizzando e li elabora sottoponendoli all’archivio delle vulnerabilità che possiede. Per questo ZAP ha due modalità di analisi: quella di default è la scansione che possiamo chiamare “leggera” ma volendo è possibile aumentare la brutalità dell’attacco per fare un’analisi più approfondita. Questa ultima modalità naturalmente implica un aumento in termini di tempo di esecuzione, utilizzo delle prestazioni e stress dell’applicazione o sito web.
Aprendolo, la prima cosa che notiamo è il suo modulo principale, lo scanner: è sufficiente inserire la URL del sito che vogliamo analizzare e ZAP riporterà tutte le stranezze sotto forma di bandierine colorate in base alla gravità di quanto trovato.
Lo Spider di ZAP analizza ogni parte di codice e cataloga ciò che trova secondo la gravità e la tipologia di vulnerabilità; ogni avviso è espandibile e corredato sia di una breve spiegazione che di link su cui trovare informazioni più dettagliate (oltre alle strategie per evitare la vulnerabilità identificata).
Molto spesso, la prima cosa che otterremo sarà un numero considerevole di informazioni, molte delle quali perfettamente inutili per il nostro scopo; questo perché è necessario perdere un po’ di tempo nel profilare correttamente ZAP ed attagliarlo alle proprie esigenze. Comunque, il consiglio è quello di approfondire la conoscenza anche di queste informazioni che possono sembrare inutili, poiché in un futuro potrebbero essere sintomo di una nuova vulnerabilità.
Come tutti gli strumenti di questo tipo, solo la pratica e la conoscenza possono aumentarne le potenzialità di utilizzo.
La scansione attiva
Con la scansione attiva è possibile utilizzare il browser integrato in ZAP e, una volta trovato un elemento del sito che giudichiamo sensibile, con il trasto destro del mouse è possibile farlo analizzare, riducendo molto i tempi ed evitando di mettere sotto stress l’intera struttura.
Questa è una soluzione molto comoda per chi è già abbastanza pratico e vuole condurre delle ricerche mirate senza perdere tempo e senza impegnare la propria postazione catalogando dati inutili.
Sessioni e Report
Ad ogni utilizzo, ZAP chiede all’utente se intende creare una sessione attiva dell’analisi che si sta per effettuare o una temporanea. La discriminante nella richiesta sta nell’utilizzo che si vuole fare dei dati che verranno raccolti: in una sessione attiva tutte le scansioni vengono memorizzate localmente per essere magari analizzate più approfonditamente in un secondo tempo.
Il Market Place
Come detto, ZAP è orientato anche al settore professionale, per cui è possibile personalizzarlo abilitando o disabilitando tipologie di attacco oppure utilizzando lo store inluso dove è possibile acquistare moduli di analisi aggiuntivi, creati e certificati dalla community di OWASP. Tra i moduli in vendita ve ne sono molti in versione prova o anche in versione beta testing per permettere all’utenza di sperimentare nuove tipologie di vulnerabilità e riportare successivamente alla community i risultati delle proprie valutazioni.
Per concludere
ZAP fa parte della grande famiglia dei “PenTesting Tool” (Penetration Testing) e di base simula un attaccante che voglia realmente trovare una vulnerabilità e approfittarne: non credo sia inutile rammentare le conseguenze penali se tale strumento venisse utilizzato senza esplicita autorizzazione da parte del proprietario del sito in questione.
ZAP non è che uno dei tanti progetti della Fondazione OWASP nati con l’intento di aiutare coloro che sviluppano o utilizzano applicazioni web e che spesso, vuoi per la fretta o per l’inesperienza, evitano quelle accortezze che, purtroppo, diventano facilitazioni per i malintenzionati.
Simone DOMINI
Per approfondimenti:
https://www.zaproxy.org/community/
https://www.difesaonline.it/evidenza/cyber/sicurezza-e-devops-cosa-vuol-dire-shift-left