Zur Seitenansicht
 

Titelaufnahme

Titel
Tavor - A Generic Fuzzing and Delta-Debugging Framework / submitted by Markus Zimmermann, BSc
AutorInnenZimmermann, Markus
Beurteiler / BeurteilerinBiere, Armin
ErschienenLinz, 2017
UmfangVI, 130 Seiten : Illustrationen
HochschulschriftUniversität Linz, Masterarbeit, 2017
SpracheEnglisch
DokumenttypMasterarbeit
Schlagwörter (EN)fuzzing / delta-debugging / mutation testing / model-based testing / tavor / go-mutesting
Schlagwörter (GND)Fuzzifizierung / Debugging / Framework <Informatik> / Generische Programmierung
URNurn:nbn:at:at-ubl:1-19850 Persistent Identifier (URN)
Zugriffsbeschränkung
 Das Werk ist gemäß den "Hinweisen für BenützerInnen" verfügbar
Dateien
Tavor - A Generic Fuzzing and Delta-Debugging Framework [1.99 mb]
Links
Nachweis
Klassifikation
Zusammenfassung (Englisch)

Testing software to verify its correctness and debugging code to locate and patch faults are two important tasks that need to be mastered by every software developer. With increasing complexity of software these tasks become progressively complicated and cumbersome. Hence, approaches that simplify these tasks are needed. Fuzzing and delta-debugging are two zeitgeisty automatic techniques that allow the systematic generation and reduction of test data. However, most implementations of these techniques utilize either fuzzing or delta-debugging with hard-coded models, or are complicated fuzzing frameworks that lack usability.

In this thesis, we introduce Tavor, a framework and tool for applying both fuzzing and delta-debugging while operating on one user-defined data model, and the Tavor Format, an EBNF-like notation that allows to define data models for file formats, protocols and test cases. In combination they allow the basic utilization of fuzzing and delta-debugging without any programming knowledge, making these techniques available to non-expert users. Additionally, we present the necessary data structures, interfaces and algorithms to achieve this combination of fuzzing and delta-debugging.

One part of our evaluation is the comparison of Tavors fuzzing capabilities with aigfuzz, a dedicated fuzzer for the sophisticated AIGER format. In total 16 commands of the AIGER toolset were evaluated to compare the generated test sets. On average the random fuzzing strategy of the Tavor Framework reached 9.16% more line coverage than aigfuzz. The best result has been obtained for the aigunroll command, where aigfuzz covered 24.08% and Tavors AlmostAllPermutations fuzzing strategy reached 61.36%. In summary, this evaluation showed that Tavor as a generic fuzzer can keep up with a dedicated fuzzing implementation.

Zusammenfassung (Deutsch)

Das Testen von Software um ihre Korrektheit zu überprüfen und das Debuggen von Source Code zum Finden und Korrigieren von Fehlern sind zwei wichtige Tätigkeiten, die von jedem Softwareentwickler gemeistert werden müssen. Mit ansteigender Komplexität von Software werden diese Tätigkeiten jedoch zunehmend kompliziert und mühsam. Es ist daher nötig Herangehensweisen anzuwenden, welche diese Tätigkeiten vereinfachen. Fuzzing und Delta-Debugging sind zwei dem Zeitgeist entsprechende automatisierte Techniken, für die systematische Generierung und Reduzierung von Testdaten. ^Die meisten Implementierungen von Fuzzing und Delta-Debugging erlauben jedoch nur die Anwendung einer dieser Techniken anhand eines fest programmierten Datenmodells, oder repräsentieren komplizierte Frameworks zur Anwendung von Fuzzing denen es an Benutzerfreundlichkeit fehlt.

Diese Arbeit stellt Tavor vor, ein Framework und Tool für die gleichzeitige Anwendung von Fuzzing und Delta-Debugging anhand benutzerdefinierter Datenmodelle, und das Tavor Format, einer EBNF-ähnlichen Notation zur Definition von Datenmodellen für Dateiformate, Protokolle und Testfälle. Zusammen erlauben sie die grundlegende Anwendung von Fuzzing und Delta-Debugging ohne das Voraussetzen von Programmierkenntnissen, wodurch diese Techniken auch für Nicht-Experten zugänglich gemacht werden. ^Zusätzlich präsentiert diese Arbeit alle nötigen Datenstrukturen, Schnittstellen und Algorithmen welche für diese Kombination von Fuzzing und Delta-Debugging nötig sind.

Ein Teil unserer Evaluierung ist der Vergleich von Tavors Fuzzing-Fähigkeiten mit aigfuzz, einem dedizierten Fuzzer für das anspruchsvolle AIGER-Format. Insgesamt wurden 16 Befehle vom AIGER-Toolset evaluiert, um die generierten Testsets zu vergleichen. Durchschnittlich erreichte die random Fuzzing-Strategie vom Tavor Framework 9.16% mehr Line-Coverage als aigfuzz. Das beste Ergebnis wurde für den Befehl aigunroll erzielt, für den aigfuzz 24.08% Abdeckung erzielt und Tavors AlmostAllPermutations Fuzzing-Strategie sogar 61.36% erreichte. Zusammenfassend lässt sich durch diese Evaluierung sagen, dass Tavor als generischer Fuzzer mit einer dedizierten Fuzzing-Implementierung mithalten kann.

Statistik
Das PDF-Dokument wurde 28 mal heruntergeladen.