Un modello integrato control-flow e data-flow per il rilevamento ...
Un modello integrato control-flow e data-flow per il rilevamento ...
Un modello integrato control-flow e data-flow per il rilevamento ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
10 2. Modelli <strong>per</strong> l’anomaly detection<br />
Le tecniche white-box e black-box hanno entrambe vantaggi e svantaggi: se<br />
<strong>per</strong> esempio si è interessati alla struttura del programma è diffic<strong>il</strong>e ricostruirla solo<br />
guardandone varie esecuzioni. Se ci sono dei rami di codice morto <strong>per</strong> un sistema<br />
black-box è impossib<strong>il</strong>e scoprirli, mentre <strong>per</strong> un sistema white-box è immediato.<br />
Tuttavia, come vedremo, anche dalle sole osservazioni (a patto di eseguirle corretta-<br />
mente) è possib<strong>il</strong>e ottenere un’incredib<strong>il</strong>e quantità di informazioni. <strong>Un</strong>a delle molte<br />
situazioni in cui invece le tecniche black-box sono avvantaggiate è ad esempio quella<br />
in cui si sta osservando dove si trovano i f<strong>il</strong>e che una chiamata ad open() apre: se in<br />
un numero ragionevolmente grande di osservazioni si vede che i f<strong>il</strong>e stanno tutti in<br />
una <strong>data</strong> directory dir si può affermare che quella open() deve aprire solo f<strong>il</strong>e che<br />
stanno in dir. Questa, non conoscendo la struttura interna del programma osserva-<br />
to è sicuramente un’informazione tutt’altro che certa ma nonostante l’incertezza è<br />
comunque un’informazione che l’analisi statica nella maggioranza dei casi non può<br />
dare.<br />
In questa tesi si cercherà di modellare <strong>per</strong> via black-box sia <strong>il</strong> <strong>control</strong> <strong>flow</strong> del<br />
programma che <strong>il</strong> <strong>data</strong> <strong>flow</strong>. Verranno prese in considerazione diverse tecniche già<br />
note, le quali <strong>per</strong>ò in certi contesti presentano delle debolezze e dunque l’obiettivo<br />
è di migliorarle e di combinarle in modo da eliminare i problemi che presentano,<br />
ottenendo un <strong>modello</strong> in grado di r<strong>il</strong>evare un numero maggiore di attacchi.<br />
2.1 Modelli <strong>control</strong> <strong>flow</strong><br />
I modelli che analizzeremo in questa sezione sono basati sulla descrizione di proprietà<br />
che riguardano <strong>il</strong> flusso di <strong>control</strong>lo di un programma. Analizzando gli eventi che<br />
si osservano a runtime è possib<strong>il</strong>e costruire degli automi che rappresentano in modo<br />
più o meno fine le transizioni ammesse <strong>per</strong> un dato programma.<br />
2.1.1 Automi a stati finiti<br />
Il <strong>modello</strong> di automi a stati finiti sicuramente più interessante è stato proposto in<br />
[21]. Gli autori osservano come tutti i modelli precedenti abbiano problemi o limi-<br />
tazioni più o meno gravi, o di carattere computazionale [10, 18] o dovute al fatto<br />
che semplicemente è stata proposta una metodologia che poco si presta all’imple-<br />
mentazione [12] e propongono una tecnica molto veloce <strong>per</strong> apprendere un automa<br />
in grado di r<strong>il</strong>evare una consistente categoria di attacchi.<br />
L’automa viene costruito a partire da una o più tracce ottenute dall’osservazione<br />
del sistema. Ogni traccia è composta da un certo numero di eventi, rappresentab<strong>il</strong>i