Abstrakt: | Fuzz testovanie je jedna z najpopulárnejších techník na hľadanie implementačných chýb
a bezpečnostných zraniteľností v softvéri. Pred 2 rokmi bol vytvorený voľne dostupný
fuzzer Fuzzilli pre JavaScriptové enginy. Mnohé fuzzery v tejto oblasti mali problémy
s generovaním sémanticky korektných programov. Autor fuzzera Fuzzilli priniesol novú
metódu, definovaním vlastného medzijazyka FuzzIL, ktorým dokázal zvýšiť podiel korektne vygenerovaných programov.
V tejto práci sa zaoberáme typovým systémom medzijazyka FuzzIL. Vyvinieme novú
metódu na odvodzovanie typov, ktorá nielen opraví doteraz zle odvádzané typové informácie, ale ich aj spresní (typy, ktoré boli zbytočne konzervatívne v pôvodnej metóde
na odvodzovanie). Túto novú metódu následne vhodne skombinujeme s pôvodnou metódou odvodzovania, čím zoptimalizujeme výkonnosť fuzzera ako celku. Následne ukážeme, že Fuzzilli s naším vylepšením dokáže generovať zaujímavejšie programy. Takto
dokážeme otestovať viac častí JavaScriptového enginu v kratšom čase.
Na záver v práci spravíme rôzne časové a pamäťové optimalizácie, ktorými zrýchlime
samotné generovanie programov. Na referenčných skúškach ukážeme, že Fuzzilli bude
schopné generovať programy rýchlejšie s použitím menšej pamäte.
|
---|