Abstract
Coverage-based Greybox Fuzzing (CGF) is a practical and effective solution for finding bugs and vulnerabilities in software. A key challenge of CGF is how to select conducive seeds and allocate accurate energy. To address this problem, we propose a novel many-objective optimization solution, MooFuzz, which can identify different states of the seed pool and continuously gather different information about seeds to guide seed schedule and energy allocation. First, MooFuzz conducts risk marking in dangerous positions of the source code. Second, it can automatically update the collected information, including the path risk, the path frequency, and the mutation information. Next, MooFuzz classifies seed pool into three states and adopts different objectives to select seeds. Finally, we design an energy recovery mechanism to monitor energy usage in the fuzzing process and reduce energy consumption. We implement our fuzzing framework and evaluate it on seven real-world programs. The experimental results show that MooFuzz outperforms other state-of-the-art fuzzers, including AFL, AFLFast, FairFuzz, and PerfFuzz, in terms of path discovery and bug detection.
Highlights
Fuzzing is a popular and effective software testing technology for detecting bugs and vulnerabilities
We find that the amount of energy in the deterministic stage is mainly related to the length of the seed, which is a relatively fine-grained mutation, but as the number of candidate seeds in the seed pool increases, it will affect the path discovery
MooFuzz is built on top of American Fuzzy Lop (AFL)-2.52b [7]
Summary
Fuzzing is a popular and effective software testing technology for detecting bugs and vulnerabilities. Multi-objective optimization [20,21,22,23] falls into the field of multiple criteria decisionmaking. Many researchers have used multi-objective optimization methods to solve practical problems [28,29,30,31], such as scheduling [32,33], planning [34,35,36], fault diagnosis [37,38,39], classification [40,41], test-sheet composition [42], object extraction [43], variable reduction [44], and virtual machine placement [45]. Multi-objective evolutionary algorithms (MOEAs), such as non-dominated sorting GA [46], multi-objective particle swarm optimization (MOPSO) [47,48,49], NSGA-II [50], NSGA-III [51,52], decomposition-based MOEA [53]
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.