03.06.2013 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!