Search for contacts, projects,
courses and publications

The human side of fuzzing
challenges faced by developers during fuzzing activities

Additional information

Authors
Nourry O., Kashiwa Y., Lin B., Bavota G., Lanza M., Kamei Y.
Type
Journal Article
Year
2023
Language
English
Abstract
Fuzz testing, also known as fuzzing, is a software testing technique aimed at identifying software vulnerabilities. In recent decades, fuzzing has gained increasing popularity in the research community. However, existing studies led by fuzzing experts mainly focus on improving the coverage and performance of fuzzing techniques. That is, there is still a gap in empirical knowledge regarding fuzzing, especially about the challenges developers face when they adopt fuzzing. Understanding these challenges can provide valuable insights to both practitioners and researchers on how to further improve fuzzing processes and techniques. We conducted a study to understand the challenges encountered by developers during fuzzing. More specifically, we first manually analyzed 829 randomly sampled fuzzing-related GitHub issues and constructed a taxonomy consisting of 39 types of challenges (22 related to the fuzzing process itself, 17 related to using external fuzzing providers). We then surveyed 106 fuzzing practitioners to verify the validity of our taxonomy and collected feedback on how the fuzzing process can be improved. Our taxonomy, accompanied with representative examples and highlighted implications, can serve as a reference point on how to better adopt fuzzing techniques for practitioners, and indicates potential directions researchers can work on toward better fuzzing approaches and practices.
Keywords
Fuzzing, Software testing, Empirical software engineering
Journal
ACM transactions on software engineering and methodology
Volume
33
Number ( Month )
1
Pages (or article number)
1-26

Diffusion

License
CC BY-NC-ND
Visibility
Public
Status open access
Green