Not logged in.

Contribution Details

Type Master's Thesis
Scope Discipline-based scholarship
Title Curiosity Guided Fuzz Testing
Organization Unit
Authors
  • David Ackermann
Supervisors
  • Alberto Bacchelli
Language
  • English
Institution University of Zurich
Faculty Faculty of Business, Economics and Informatics
Date 2019
Abstract Text Fuzz testing is a widely used automated testing technique and has recently enjoyed great success in finding new vulnerabilities. The most successful fuzzing approach, coverage guided fuzzing, randomly mutates a test seed in hopes of uncovering further program coverage. However, random mutation rarely reveals new insights, making coverage guided fuzzing highly inefficient. Additionally, using coverage alone as a proxy for finding bugs is inadequate as it might not correlate highly and lacks information context. In this work, we combine coverage guided fuzzing with a state of the art reinforcement learning technique. We treat the input space of a program as an exploration problem, in which the fuzzer explores by curiosity. Not only does it add information context, but also a dense reward structure for the fuzzer to consider. We built a prototype, called a CuriousAFL that combines a widely recognized coverage guided fuzzer with exploration. Our evaluation shows that CuriousAFL significantly outperforms several state-of-the-art fuzzers on real-world programs in terms of coverage and finding new bugs.
Zusammenfassung Fuzz Testing ist eine weit verbreitete automatisierte Testtechnik und hat in jüngster Zeit große Erfolge bei der Suche nach neuen Sicherheitslücken in Software erzielt. Der erfolgreichste Ansatz für Fuzz Testing, das Coverage Guided Fuzzing, mutiert zufällig einen Testfall, in der Hoffnung weitere Programmbereiche aufzudecken. Zufällige Mutationen zeigen jedoch selten neue Bereiche in einem Programm, was Coverage Guided Fuzzing sehr ineffizient macht. Darüber hinaus ist die Maximierung der Programmabdeckung allein unzureichend für die Fehlersuche, da sie keinen Informationsbezug hat und die Korrelation unklar ist. In dieser Arbeit kombinieren wir Coverage Guided Fuzzing mit einer Technik des bestärkenden Lernens. Wir behandeln den Eingabebereich eines Programms als Explorationsproblem, in dem der Fuzzer durch Neugierde neue Bereiche entdeckt. Dies fügt nicht nur den Informationskontext hinzu, sondern auch eine dichte Belohnungsstruktur, die der Fuzzer zu berücksichtigen hat. Wir haben einen Prototyp gebaut, genannt CuriousAFL, der einen weithin anerkannten Coverage Guided Fuzzer mit Exploration kombiniert. Unsere Auswertung zeigt, dass CuriousAFL mehrere hochmoderne Fuzzer in realen Programmen in Bezug auf Programmabdeckung und Auffinden neuer Programmfehler deutlich übertrifft.
PDF File Download
Export BibTeX