Comparing AFL scalability in virtual- and native environment - Pasanen, Erno (2020)
Tämän työn lähtökohtana oli tutkia automaattisien haavoittuvuusetsintä työkalujen (fuzzereiden) skaalautuvuutta natiivissa- ja virtuaalisessa suoritusympäristössä. Tutkielma suoritettiin monitapaustutkimuksena, jossa analyysi yksikkönä toimi fuzzeri American Fuzzy Lop (AFL). Monitapaustutkimuksen tavoitteena oli millaisella konfiguraatiolla AFL toimii parhaiten, hidastaako suoritusympäristö fuzzeria ja skaalautuuko AFL rinnakkaisajossa olemassa olevan teorian mukaan? Kirjallisuuskatsauksen perusteella tunnistettiin neljä mittaria: koodin kattavuus, löydettyjen bugien määrä, suoritusten määrä sekunnissa, sekä yhteisen bugin löytämiseen kulunut aika. Monitapaustutkimus jaettiin viiteen osaan, joista jokainen osa toistettiin natiivissa ja virtuaaliympäristössä. Osien toistaminen suoritettiin skriptaamalla. Instanssien ajaminen ei sujunut täysin odotuksien mukaisesti. Pilotti tapauksen ajaminen vaati kaksi uusintakertaa, sillä tuloksien perusteella oli nähtävissä, että AFL ei ollut käynnistynyt oikein. Tuloksia kerätessä huomattiin myös, että yhden päivän koe oli uusittava virheen vuoksi. Lisäksi yhden virtuaalisen tapauksen tuloksia ei ollut kirjattu tuntemattomasta syystä, mutta tämä ei ollut este tutkimuksen tuloksien analysoimiseksi. Tutkimuksen tulokset analysoitiin Mann-Whitney U-testillä sekä Vargha-Delaney Â12 vaikutuksen suuruus testillä. Koodin kattavuutta ei voitu arvioida, sillä tulokset olivat liian homogeenisia. Löydettyjä bugeja oli yhteensä seitsemän, mutta bugeja oli löydetty hyvin harvakseltaan, jolloin vertailua ei voitu suorittaa. Suoritusnopeuden tapauksessa konfiguraatioiden keskiarvon mittaaminen muodostui ongelmalliseksi, koska keskiarvo suoritusnopeudesta konvergoitui renkien (slave) tuloksien ympärille. Suoritusnopeutta mitattiin täten laskemalla fuzzereiden yhteenlaskettu keskiarvo. Kumulatiivisen keskiarvon lisäksi kaikista tapauksista löytyi yhteinen bugi (read_utmp) jota voitiin käyttää tehokkuuden mittaamiseen. Tuloksien perusteella voidaan todeta, että käyttäessä monta isäntää fuzzeri nopeutuu, mutta lisättäessä renkejä sen kyky löytää bugeja paranee. Vastaavasti virtuaali- ja natiivi toteutus eivät tehollisesti eronneet toisistaan merkittävästi. Lopuksi voidaan todeta, että fuzzaaminen skaalautuu erittäin tehokkaasti käyttäessä kahta tai kolmea tietokoneen ydintä.