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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2.3. Discussione dei modelli studiati 21<br />

• NewArgs(C) è {A, B} <strong>per</strong> la prima occorrenza di C, è {D, E} <strong>per</strong> la seconda<br />

In Figura 2.7 è riportato un piccolo programma insieme alle informazioni apprese<br />

dal <strong>modello</strong> <strong>data</strong> <strong>flow</strong>.<br />

1 int main(void)<br />

2 {<br />

3 int fd;<br />

4 fd = open("test.txt");<br />

5 write(fd,"Hello");<br />

6 close(fd);<br />

7 }<br />

fd@5 equals fd@4<br />

fd@6 equals fd@4<br />

fd@6 equals fd@5<br />

Figura 2.7: Informazioni apprese a runtime dall’analisi <strong>data</strong> <strong>flow</strong>.<br />

2.3 Discussione dei modelli studiati<br />

In questo capitolo sono stati descritti quattro modelli <strong>control</strong> <strong>flow</strong> ed uno <strong>data</strong> <strong>flow</strong>.<br />

Dei quattro modelli <strong>data</strong> <strong>flow</strong>, tre sono costruiti black-box, ovvero senza bisogno di<br />

aver accesso al codice sorgente: questo <strong>per</strong>mette una loro applicazione universale<br />

a differenza del quarto <strong>modello</strong> che, pur essendo potenzialmente più preciso, trova<br />

limitata applicab<strong>il</strong>ità. La costruzione di questo <strong>modello</strong>, dovendo essere effettuata<br />

staticamente, deve essere supportata da un tool in grado di riconoscere <strong>il</strong> linguaggio<br />

sorgente del programma o addirittura dal comp<strong>il</strong>atore stesso e questo ne accresce<br />

notevolmente la complessità implementativa. Inoltre, <strong>per</strong> gli execution graphs, in<br />

[7] viene dimostrata una proprietà molto importante, ovvero che <strong>il</strong> linguaggio rico-<br />

nosciuto da un execution graph è contenuto in quello riconosciuto dal <strong>control</strong> <strong>flow</strong><br />

graph del medesimo programma. Questo significa che, a patto di eseguire un trai-<br />

ning corretto, viene colta praticamente tutta la struttura del programma ut<strong>il</strong>e <strong>per</strong><br />

l’anomaly detection.<br />

I modelli sono stati presentati in ordine crescente di capacità di rivelare eventuali<br />

anomalie e le loro caratteristiche sono riassunte nella Tabella 2.1. Le relazioni ⊆ e<br />

⊇ in questo caso significano rispettivamente che le sequenze accettate dal <strong>modello</strong><br />

sono un sottoinsieme e un soprainsieme di quelle ammissib<strong>il</strong>i dal <strong>control</strong> <strong>flow</strong> graph.<br />

All’atto pratico questo si traduce nella presenza di falsi positivi e falsi negativi. In<br />

particolare <strong>il</strong> <strong>modello</strong> FSA può riconoscere come non valide transizioni che invece<br />

lo sono, generando falsi positivi (a causa di un training insufficiente) ma può anche<br />

riconoscere come valide transizioni che non lo sono, generando falsi negativi (ad

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

Saved successfully!

Ooh no, something went wrong!