BSFuzz: Branch-State Guided Hybrid Fuzzing

被引:1
作者
Hu, Qi [1 ]
Chen, Weijia [1 ]
Wang, Zhi [1 ]
Lu, Shuaibing [2 ]
Nie, Yuanping [2 ]
Li, Xiang [2 ]
Kuang, Xiaohui [2 ]
机构
[1] Nankai Univ, Coll Cyber Sci, Tianjin 300350, Peoples R China
[2] Natl Key Lab Sci & Technol Informat Syst Secur, Beijing 100101, Peoples R China
关键词
hybrid fuzzing; concolic execution; branch-solving state; coverage state;
D O I
10.3390/electronics12194033
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
Hybrid fuzzing is an automated software testing approach that synchronizes test cases between the fuzzer and the concolic executor to improve performance. The concolic executor solves path constraints to direct the fuzzer to explore the uncovered path. Despite many performance optimizations for hybrid fuzzing, we observe that the concolic executor often repeatedly performs constraint solving on branches with unsolvable constraints and branches covered by multiple test cases. This can cause significant computational redundancies. To be efficient, we propose BSFuzz, which keeps tracking the coverage state and solving state in a lightweight branch state map. BSFuzz synchronizes the current coverage state of all test cases from the fuzzer's queue with the concolic executor in a timely manner to reduce constraint solving for high-frequency branches. It also records the branch-solving state during the concolic execution to reduce repeated solving of unsolvable branches. Guided by the coverage state and historical solving state, BSFuzz can efficiently discover and solve more branches. The experimental results with real-world programs demonstrate that BSFuzz can effectively increase the speed of the concolic executor and improve branch coverage.
引用
收藏
页数:16
相关论文
共 43 条
[1]  
[Anonymous], 2014, Google DynamoRIO
[2]  
[Anonymous], 2010, GOCT P 8.673-2009
[3]   Enhancing Symbolic Execution with Veritesting [J].
Avgerinos, Thanassis ;
Rebert, Alexandre ;
Cha, Sang Kil ;
Brumley, David .
COMMUNICATIONS OF THE ACM, 2016, 59 (06) :93-100
[4]   Coverage-Based Greybox Fuzzing as Markov Chain [J].
Bohme, Marcel ;
Van-Thuan Pham ;
Roychoudhury, Abhik .
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2019, 45 (05) :489-506
[5]  
Cadar Cristian, 2008, Operating system design and implementation
[6]   Program-Adaptive Mutational Fuzzing [J].
Cha, Sang Kil ;
Woo, Maverick ;
Brumley, David .
2015 IEEE SYMPOSIUM ON SECURITY AND PRIVACY SP 2015, 2015, :725-741
[7]   Matryoshka: Fuzzing Deeply Nested Branches [J].
Chen, Peng ;
Liu, Jianzhong ;
Chen, Hao .
PROCEEDINGS OF THE 2019 ACM SIGSAC CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY (CCS'19), 2019, :499-513
[8]   Angora: Efficient Fuzzing by Principled Search [J].
Chen, Peng ;
Chen, Hao .
2018 IEEE SYMPOSIUM ON SECURITY AND PRIVACY (SP), 2018, :711-725
[9]  
Chen Y., 2020, 23 INT S RES ATT INT, P77
[10]  
Chipounov V, 2011, ACM SIGPLAN NOTICES, V46, P265, DOI [10.1145/1961295.1950396, 10.1145/1961296.1950396]