Paolo Perego bio photo

Paolo Perego

Specialista di application security italiano. 37 anni, milanese, papà, praticante di Taekwon-do ITF, chitarrista e blogger.

Twitter Facebook Github

Mirage: your application modeler to go

Con questo tweet, rilancio il progetto Mirage annunciato e caduto nel dimenticatoio (ma neanche tanto) in questa primavera-estate 2010 piena di cambiamenti nella mia vita professionale.

Cos'è mirage? Semplice da spiegare, mirage è un tool per costruire un modello di un'applicazione per permettere a tool di analisi del codice di poter lavorare.

Un modello dell'applicazione significa fornire informazioni che abbiano un senso semantico partendo da un codice sorgente. Informazioni che abbiano un senso come statistiche sul numero di linee di codice, blocchi di codice non utilizzato, percorso delle variabili, percorso del flusso logico dell'applicazione.
Perché serve questo? 

Supponiamo di voler verificare se la nostra app presenta potenziali XSS. Un approccio potrebbe essere quello di utilizzare il tanto amato pattern-matching per trovare delle sequenze tipiche di input non gestito correttamente e quindi segnalare un potenziale Cross Site Scripting.

La differenza sta qui, io preferisco parlare sempre di potenziali vulnerabilità. La verifica dell'effettiva possibilità di exploit o la si ha con un penetration test o la si ha parlando con il development team.

Questo approccio ha un problema.

I falsi positivi sono all'ordine del giorno, inoltre non è possibile enumerare tutti i casi in cui il codice si espone ad una vulnerabilità di questo tipo (è un problema abbastanza generico da essere preso per vero anche per altre vulnerabilità).

In parole poche... non funziona.
L'approccio corretto è quello di creare un data flow diagram, vedere il percorso che fa una certa variabile, provare ad iniettare un vettore d'attacco e vedere se cambia il proprio valore prima di venire utilizzato sul db o in output. 

Mirage ha come scopo questo. Estrarre dal codice applicativo informazioni aventi un preciso valore semantico da utilizzare per successive lavorazioni, siano esse indirizzate alle security o al refactoring del codice.

Non pubblico questa volta una roadmap. Troppo spesso ho disatteso le scadenze, purtroppo quando si lavora su progetti opensource nei ritagli di tempo è molto difficile stimare.

Però ho in testa la roadmap. 
Ho in testa gli obiettivi.
Ed a breve avrò anche uno spazio per tenere aggiornati tutti su: http://mirage.armoredcode.com.

comments powered by Disqus