E194 - Institut für Information Systems Engineering
-
Datum (veröffentlicht):
2024
-
Umfang:
35
-
Keywords:
fuzz testing; smart contract; benchmarking; testing; software security; program generation
en
Abstract:
Fuzzers sind Werkzeuge zur automatisierten Durchführung von Softwaretests, die unerwartetes oder falsches Verhalten von Software aufdecken, indem diese wiederholt mit verschiedenen Inputs ausgeführt wird. Die Entwicklung von Fuzzern ist ein reger Forschungsbereich und neue Fuzzer und Fuzzingmethoden werden laufend eingeführt; es ist daher wichtig, Stärken und Schwächen verschiedener Fuzzer evaluieren zu können.Es gibt bereits viele verschiedene Fuzzer-Benchmarking Projekte, allerdings vergleichen diese immer Fuzzer einer bestimmten Programmiersprache, was es schwierig macht, Fuzzer verschiedener Sprachen vergleichen zu können. Wir führen Muzzle ein, ein Fuzzer-Benchmarking Werkzeug, das fehlerhafte, semantisch äquivalente C und Solidity Programme generiert. Muzzle evaluiert Fuzzer beider Sprachen mithilfe von Benchmarks aus Programmen, die es generiert. Wir verwenden Muzzle, um einen solchen Benchmark aus Programmen zu generieren und vergleichen damit verschiedene Solidity und C Fuzzer basierend auf ihren Fähigkeiten und ihre Geschwindigkeit, Fehler in den Programmen zu finden. Unsere Ergebnisse zeigen, dass C Fuzzer wesentlich besser als Solidity Fuzzer abschneiden, allerdings gibt es auch innerhalb der Solidity Fuzzer starke Unterschiede.
de
Fuzzers are testing tools which discover unexpected or incorrect behaviour in software applications by repeatedly executing software with different inputs. Development of fuzzers is an active research area and new fuzzers and fuzzing techniques are introduced constantly, therefore it is important to evaluate strengths and weaknesses of different fuzzers. Various fuzzer benchmarking projects already exist, but existing tools only compare fuzzers of a specific programming language, making it hard to tell how fuzzers of different languages compare. We introduce Muzzle, a fuzzer benchmarking tool which generates buggy, semantically equivalent C and Solidity programs. Muzzle evaluates fuzzers of both languages using the programs it generates as a benchmark. We generate a benchmark of programs using Muzzle and evaluate different Solidity and C fuzzers based on their ability and speed in finding bugs. Our results show that C fuzzers one-sidedly outperform Solidity ones, yet even between the evaluated Solidity fuzzers there are stark differences.