LearnAFL: Greybox Fuzzing With Knowledge Enhancement
Authors:
Open Access
- 23 August 2019
- journal article
- research article
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Access
- Vol. 7, 117029-117043
Abstract
Mutation-based greybox fuzzing is a highly effective and widely used technique to find bugs in software. Provided initial seeds, fuzzers continuously generate test cases to test the software by mutating a seed input. However, the majority of them are “invalid” because the mutation may destroy the format of the seeds. In this paper, we present a knowledge-learn evolutionary fuzzer based on AFL, which is called LearnAFL. LearnAFL does not require any prior knowledge of the application or input format. Based on our format generation theory, LearnAFL can learn partial format knowledge of some paths by analyzing the test cases that exercise the paths. Then LearnAFL uses these format information to mutate the seeds, which is efficient to explore deeper paths and reduce the test cases exercising high-frequency paths than AFL. We compared LearnAFL with AFL and some other state-of-the-art fuzzers on ten real-world programs. The result showed that LearnAFL could reach branch coverage 120% and 110% of that of AFL and FairFuzz, respectively. LearnAFL also found 8 unknown vulnerabilities in GNU Binutils, Libpng and Gif2png, all of which have been reported to the vendors. Besides, we compared the format information learned from the initial seed of an ELF file with a format standard of ELF files. The result showed that LearnAFL learns about 64% part of the file format without any prior knowledge.Keywords
Funding Information
- Program for New Century Excellent Talents in University
- National High-level Personnel for Defense Technology Program (2017-JCJQ-ZQ-013)
- Natural Science Foundation of Hunan Province (2017RS3045)
- Natural Science Foundation of Hunan Province (2019JJ50729)
- National Natural Science Foundation of China (61472437, 61902412, 61902416)
This publication has 15 references indexed in Scilit:
- AFL Extended with Test Case Prioritization TechniquesInternational Journal of Modeling and Optimization, 2018
- Coverage-Based Greybox Fuzzing as Markov ChainIEEE Transactions on Software Engineering, 2017
- Directed Greybox Fuzzing2017
- Learn&Fuzz: Machine learning for input fuzzing2017
- Synthesizing program input grammarsACM SIGPLAN Notices, 2017
- Skyfire: Data-Driven Seed Generation for Fuzzing2017
- VUzzer: Application-aware Evolutionary Fuzzing2017
- Driller: Augmenting Fuzzing Through Selective Symbolic Execution2016
- An Introduction to Category Theory2011
- An empirical study of the reliability of UNIX utilitiesCommunications of the ACM, 1990