Data Coverage for Guided Fuzzing

被引:0
作者
Wang, Mingzhe [1 ]
Liang, Jie [1 ]
Zhou, Chijin [1 ]
Wu, Zhiyong [1 ]
Fu, Jingzhou [1 ]
Su, Zhuo [1 ]
Liao, Qing [2 ]
Gu, Bin [3 ]
Wu, Bodong [4 ]
Jiang, Yu [1 ]
机构
[1] Tsinghua Univ, Beijing, Peoples R China
[2] Harbin Inst Technol, Harbin, Peoples R China
[3] Beijing Inst Control Engn, Beijing, Peoples R China
[4] Huawei Technol Co Ltd, Shenzhen, Peoples R China
来源
PROCEEDINGS OF THE 33RD USENIX SECURITY SYMPOSIUM, SECURITY 2024 | 2024年
关键词
D O I
暂无
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
Code coverage is crucial for fuzzing. It helps fuzzers identify areas of a program that have not been explored, which are often the most likely to contain bugs. However, code coverage only reflects a small part of a program's structure. Many crucial program constructs, such as constraints, automata, and Turing-complete domain-specific languages, are embedded in a program as constant data. Since this data cannot be effectively reflected by code coverage, it remains a major challenge for modern fuzzing practices. To address this challenge, we propose data coverage for guided fuzzing. The idea is to detect novel constant data references and maximize their coverage. However, the widespread use of constant data can significantly impact fuzzing throughput if not handled carefully. To overcome this issue, we optimize for real-world fuzzing practices by classifying data access according to semantics and designing customized collection strategies. We also develop novel storage and utilization techniques for improved fuzzing efficiency. Finally, we enhance libFuzzer with data coverage and submit it to Google's FuzzBench for evaluation. Our approach outperforms many state-of-the-art fuzzers and achieves the best coverage score in the experiment. Furthermore, we have discovered 28 previously-unknown bugs on OSS-Fuzz projects that were well-fuzzed using code coverage.
引用
收藏
页码:2511 / 2526
页数:16
相关论文
共 38 条
[1]  
Aizatsky Mike, 2022, google/oss-fuzz: Oss-fuzz-continuous fuzzing for open source software
[2]   NAUTILUS: Fishing for Deep Bugs with Grammars [J].
Aschermann, Cornelius ;
Frassetto, Tommaso ;
Holz, Thorsten ;
Jauernig, Patrick ;
Sadeghi, Ahmad-Reza ;
Teuchert, Daniel .
26TH ANNUAL NETWORK AND DISTRIBUTED SYSTEM SECURITY SYMPOSIUM (NDSS 2019), 2019,
[3]   IJON: Exploring Deep State Spaces via Fuzzing [J].
Aschermann, Cornelius ;
Schumilo, Sergej ;
Abbasi, Ali ;
Holz, Thorsten .
2020 IEEE SYMPOSIUM ON SECURITY AND PRIVACY (SP 2020), 2020, :1597-1612
[4]   PRODUCING GOOD CODE FOR THE CASE STATEMENT [J].
BERNSTEIN, RL .
SOFTWARE-PRACTICE & EXPERIENCE, 1985, 15 (10) :1021-1024
[5]  
Bhme Marcel, 2020, P 28 ACM JOINT M EUR
[6]  
Bohme Marcel., 2016, Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security, CCS '16, P1032
[7]  
Cadar C., 2008, Proceedings of the 8th USENIX conference on Operating systems design and implementation, P209, DOI DOI 10.5555/1855741.1855756
[8]   Grey-box Concolic Testing on Binary Code [J].
Choi, Jaeseung ;
Jang, Joonun ;
Han, Choongwoo ;
Cha, Sang Kil .
2019 IEEE/ACM 41ST INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2019), 2019, :736-747
[9]  
Fioraldi Andrea, 2022, CCS '22: Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security, P1051, DOI 10.1145/3548606.3560602
[10]  
Fioraldi Andrea, 2020, 14 USENIX WORKSHO