A Systematic Review of Fuzzing Techniques

Chen,Baojiang Cui,Jinxin Ma,Runpu Wu,Jianchao Guo,Wenqian Liu
DOI: https://doi.org/10.1016/j.cose.2018.02.002
2018-01-01
Abstract:Fuzzing is an effective and widely used technique for finding security bugs and vulnerabilities in software. It inputs irregular test data into a target program to try to trigger a vulnerable condition in the program execution. Since the first random fuzzing system was constructed, fuzzing efficiency has been greatly improved by combination with several useful techniques, including dynamic symbolic execution, coverage guide, grammar representation, scheduling algorithms, dynamic taint analysis, static analysis and machine learning. In this paper, we will systematically review these techniques and their corresponding representative fuzzing systems. By introducing the principles, advantages and disadvantages of these techniques, we hope to provide researchers with a systematic and deeper understanding of fuzzing techniques and provide some references for this field.
What problem does this paper attempt to address?