TL;DR
DARWIN introduces an evolution strategy-based mutation scheduler for fuzzing that adaptively optimizes mutation operators without extra user parameters, leading to significant improvements in bug discovery and code coverage.
Contribution
It is the first mutation scheduler to demonstrate real-world fuzzing improvements without requiring user-configurable parameters, using an adaptive evolution strategy.
Findings
Outperforms AFL baseline and state-of-the-art schedulers in coverage and bug detection
Discovered 66% more bugs than AFL in real-world applications
Found 15 out of 21 bugs fastest in MAGMA benchmark
Abstract
Fuzzing is an automated software testing technique broadly adopted by the industry. A popular variant is mutation-based fuzzing, which discovers a large number of bugs in practice. While the research community has studied mutation-based fuzzing for years now, the algorithms' interactions within the fuzzer are highly complex and can, together with the randomness in every instance of a fuzzer, lead to unpredictable effects. Most efforts to improve this fragile interaction focused on optimizing seed scheduling. However, real-world results like Google's FuzzBench highlight that these approaches do not consistently show improvements in practice. Another approach to improve the fuzzing process algorithmically is optimizing mutation scheduling. Unfortunately, existing mutation scheduling approaches also failed to convince because of missing real-world improvements or too many user-controlled…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
