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 ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
36 3. <strong>Un</strong> <strong>modello</strong> che integra <strong>control</strong> <strong>flow</strong> e <strong>data</strong> <strong>flow</strong><br />
la loro efficacia nel proteggere un’applicazione sia elevata, si sono identificati dei casi<br />
in cui degli attacchi passano inosservati. I falsi negativi sono dovuti al fatto che le<br />
informazioni raccolte sono troppo povere e prive di un adeguato contesto. In questa<br />
tesi si propone un <strong>modello</strong> <strong>integrato</strong> <strong>control</strong> <strong>flow</strong>/<strong>data</strong> <strong>flow</strong> in grado di risolvere<br />
questi problemi e di r<strong>il</strong>evare attacchi non visib<strong>il</strong>i dai modelli già esistenti.<br />
Per quanto riguarda la parte <strong>control</strong> <strong>flow</strong> si è adottato <strong>il</strong> <strong>modello</strong> dell’execution<br />
graph. La sua precisione è estremamente elevata e forse anche diffic<strong>il</strong>e da su<strong>per</strong>are.<br />
Per quanto riguarda la parte <strong>data</strong> <strong>flow</strong> invece si sono studiate delle estensioni al<br />
<strong>modello</strong> di [2] relative alle relazioni unarie e alle relazioni binarie, inoltre lo si è<br />
dotato della capacità di apprendere delle alternative.<br />
chiedi_nome_f<strong>il</strong>e<br />
read main.22<br />
main.24 main.25<br />
g.10<br />
put_msg.5<br />
write<br />
stack = [main.22 | g.10 | put_msg.5] implies buf@5 = “Hello,”<br />
stack = [main.25 | put_msg.5] implies buf@5 = “world\n”<br />
Figura 3.9: Nuovo <strong>modello</strong> <strong>per</strong> l’esempio del primo scenario.<br />
Il risultato può essere visto come un execution graph annotato su ogni nodo<br />
foglia con delle informazioni <strong>data</strong> <strong>flow</strong> che <strong>per</strong> ogni esecuzione valida del programma<br />
devono essere verificate. Se non lo sono si è di fronte ad un comportamento anomalo,<br />
verosim<strong>il</strong>mente un attacco.<br />
Durante <strong>il</strong> training ad ogni evento viene aggiunta informazione al <strong>modello</strong>. Ogni<br />
chiamata di sistema viene osservata assieme allo stack user-space e a tutti i suoi<br />
parametri. Lo stack viene ut<strong>il</strong>izzato <strong>per</strong> costruire l’execution graph e <strong>per</strong> contestua-<br />
lizzare le relazioni unarie, mentre i parametri vengono ut<strong>il</strong>izzati nell’apprendimento<br />
sia delle relazioni unarie che delle relazioni binarie.<br />
Nella sua forma più semplice l’idea <strong>per</strong> apprendere le relazioni unarie è quella<br />
di creare una tabella in cui le righe sono indicizzate dagli stack che si osservano<br />
mentre le colonne sono indicizzate dai nomi dei parametri. Ad ogni chiamata di