FairFuzz: Targeting Rare Branches to Rapidly Increase Greybox Fuzz Testing Coverage
arXiv:1709.07101 · doi:10.1145/3238147.3238176
Abstract
In recent years, fuzz testing has proven itself to be one of the most effective techniques for finding correctness bugs and security vulnerabilities in practice. One particular fuzz testing tool, American Fuzzy Lop or AFL, has become popular thanks to its ease-of-use and bug-finding power. However, AFL remains limited in the depth of program coverage it achieves, in particular because it does not consider which parts of program inputs should not be mutated in order to maintain deep program coverage. We propose an approach, FairFuzz, that helps alleviate this limitation in two key steps. First, FairFuzz automatically prioritizes inputs exercising rare parts of the program under test. Second, it automatically adjusts the mutation of inputs so that the mutated inputs are more likely to exercise these same rare parts of the program. We conduct evaluation on real-world programs against state-of-the-art versions of AFL, thoroughly repeating experiments to get good measures of variability. We find that on certain benchmarks FairFuzz shows significant coverage increases after 24 hours compared to state-of-the-art versions of AFL, while on others it achieves high program coverage at a significantly faster rate.
Cited by in corpus (14)
- Magma: A Ground-Truth Fuzzing Benchmark
- Semantic Fuzzing with Zest
- Automated Conformance Testing for JavaScript Engines via Deep Compiler Fuzzing
- SoK: Prudent Evaluation Practices for Fuzzing
- Putting the Semantics into Semantic Versioning
- BeDivFuzz: Integrating Behavioral Diversity into Generator-based Fuzzing
- The Progress, Challenges, and Perspectives of Directed Greybox Fuzzing
- Evaluating Synthetic Bugs
- : Rigorous and Efficient Directed Greybox Fuzzing
- UltraFuzz: Towards Resource-saving in Distributed Fuzzing
- MicroFuzz: An Efficient Fuzzing Framework for Microservices
- State Machine Mutation-based Testing Framework for Wireless Communication Protocols
- SLOPT: Bandit Optimization Framework for Mutation-Based Fuzzing
- FuzzWiz -- Fuzzing Framework for Efficient Hardware Coverage