Everything is Good for Something: Counterexample-Guided Directed Fuzzing via Likely Invariant Inference

被引:0
作者
Huang, Heqing [1 ]
Zhou, Anshunkang [2 ]
Payer, Mathias [3 ]
Zhang, Charles [2 ]
机构
[1] City Univ Hong Kong, Hong Kong, Peoples R China
[2] Hong Kong Univ Sci & Technol, Hong Kong, Peoples R China
[3] Ecole Polytech Fed Lausanne, Lausanne, Switzerland
来源
45TH IEEE SYMPOSIUM ON SECURITY AND PRIVACY, SP 2024 | 2024年
基金
欧盟地平线“2020”;
关键词
D O I
10.1109/SP54263.2024.00142
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
Directed fuzzing demonstrates the potential to reproduce bug reports, verify patches, and debug vulnerabilities. State-of-the-art directed fuzzers prioritize inputs that are more likely to trigger the target vulnerability or filter irrelevant inputs unrelated to the targets. Despite these efforts, existing approaches struggle to reproduce specific vulnerabilities as most generated inputs are irrelevant. For instance, in the Magma benchmark, more than 94% of generated inputs miss the target vulnerability. We call this challenge the indirect input generation problem. We propose to increase the yield of inputs that reach the target location by restraining input generation. Our key insight is to infer likely invariants from both reachable and unreachable executed inputs to constrain the search space of the subsequent input generation and produce more reachable inputs. Moreover, we propose two selection strategies to minimize the fraction of unnecessary inputs for efficient invariant inference and deprioritize imprecise invariants for effective input generation. Halo, our prototype implementation, outperforms state-of-the-art directed fuzzers with a 15.3x speedup in reproducing target vulnerabilities by generating 6.2x more reachable inputs. During our evaluation, we also detected ten previously unknown bugs involving seven incomplete fixes in the latest versions of well-fuzzed targets.
引用
收藏
页码:1956 / 1973
页数:18
相关论文
共 66 条
[1]  
[Anonymous], 2013, AFL AM FUZZ LOP
[2]  
[Anonymous], 2020, 29 USENIX SEC S USEN
[3]  
[Anonymous], 2018, OSS FUZZ REPORT
[4]   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,
[5]  
Ball T, 1999, LECT NOTES COMPUT SC, V1687, P216, DOI 10.1145/318774.318944
[6]  
Balzarotti D., 2021, 30 USENIX SEC S USEN
[7]   The Oracle Problem in Software Testing: A Survey [J].
Barr, Earl T. ;
Harman, Mark ;
McMinn, Phil ;
Shahbaz, Muzammil ;
Yoo, Shin .
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2015, 41 (05) :507-525
[8]   GPUVerify: A Verifier for GPU Kernels [J].
Betts, Adam ;
Chong, Nathan ;
Donaldson, Alastair F. ;
Qadeer, Shaz ;
Thomson, Paul .
ACM SIGPLAN NOTICES, 2012, 47 (10) :113-131
[9]   Directed Greybox Fuzzing [J].
Bohme, Marcel ;
Van-Thuan Pham ;
Manh-Dung Nguyen ;
Roychoudhury, Abhik .
CCS'17: PROCEEDINGS OF THE 2017 ACM SIGSAC CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY, 2017, :2329-2344
[10]  
Brown F, 2020, PROCEEDINGS OF THE 29TH USENIX SECURITY SYMPOSIUM, P199