Bugs that survive the heat of continuous fuzzing
Blog post from GitHub
Fuzz testing, or fuzzing, is a crucial automated software testing technique used to identify vulnerabilities in software by providing random or mutated inputs and monitoring for exceptions or crashes. OSS-Fuzz, a major open-source security initiative, has successfully identified thousands of bugs in over 1,300 projects, yet it highlights that even mature projects can harbor undetected vulnerabilities, necessitating human oversight. Examples from the GStreamer, Poppler, and Exiv2 projects illustrate the limitations of fuzzing, such as inadequate code coverage, reliance on external dependencies, and overlooked encoding vulnerabilities. To enhance fuzzing efficacy, a five-step workflow is recommended, emphasizing preparation, expanding code and context-sensitive coverage, and improving value coverage, while acknowledging the challenges in detecting bugs that require extensive input size or time to manifest. Despite its limitations, fuzzing remains a potent tool for uncovering bugs, but it must be complemented by human expertise and additional testing methodologies to ensure comprehensive security.