IEEE Access (Jan 2020)

CSEFuzz: Fuzz Testing Based on Symbolic Execution

  • Zhangwei Xie,
  • Zhanqi Cui,
  • Jiaming Zhang,
  • Xiulei Liu,
  • Liwei Zheng

DOI
https://doi.org/10.1109/ACCESS.2020.3030798
Journal volume & issue
Vol. 8
pp. 187564 – 187574

Abstract

Read online

Fuzz testing has been successful in finding defects of various software packages. These defects include file parsing, image processing, Internet browsers, and network protocols. However, the quality of the initial seed test cases greatly influences the coverage and defect detection capability of fuzz testing. To address this issue, we propose CSEFuzz, a fuzz testing approach based on symbolic execution for defect detection. First, CSEFuzz generates candidate test cases by symbolic execution and collects coverage information of the test cases. Then, CSEFuzz extracts the test-case templates of the test cases and selects a set of test-case templates according to specific coverage criteria. Finally, CSEFuzz selects test cases according to the selected test-case templates, and the selected test cases are used as initial seed test cases for fuzz testing. Experiments are conducted on 11 open-source programs. The results show that in comparison with afl-cmin, which is the test-case selection command of Kelinci, CSEFuzz with a path coverage criterion reduces the time costs of the initial seed test selection and verification by 94.26%. In addition, compared with afl-cmin, 32 more paths are covered and 16 more defects are detected by CSEFuzz.

Keywords