REDQUEEN: Fuzzing with Input-to-State Correspondence

被引:169
作者
Aschermann, Cornelius [1 ]
Schumilo, Sergej [1 ]
Blazytko, Tim [1 ]
Gawlik, Robert [1 ]
Holz, Thorsten [1 ]
机构
[1] Ruhr Univ Bochum, Bochum, Germany
来源
26TH ANNUAL NETWORK AND DISTRIBUTED SYSTEM SECURITY SYMPOSIUM (NDSS 2019) | 2019年
基金
欧盟地平线“2020”;
关键词
D O I
10.14722/ndss.2019.23371
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
Automated software testing based on fuzzing has experienced a revival in recent years. Especially feedback-driven fuzzing has become well-known for its ability to efficiently perform randomized testing with limited input corpora. Despite a lot of progress, two common problems are magic numbers and (nested) checksums. Computationally expensive methods such as taint tracking and symbolic execution are typically used to overcome such roadblocks. Unfortunately, such methods often require access to source code, a rather precise description of the environment (e.g., behavior of library calls or the underlying OS), or the exact semantics of the platform's instruction set. In this paper, we introduce a lightweight, yet very effective alternative to taint tracking and symbolic execution to facilitate and optimize state-of-the-art feedback fuzzing that easily scales to large binary applications and unknown environments. We observe that during the execution of a given program, parts of the input often end up directly (i.e., nearly unmodified) in the program state. This input-to-state correspondence can be exploited to create a robust method to overcome common fuzzing roadblocks in a highly effective and efficient manner. Our prototype implementation, called REDQUEEN, is able to solve magic bytes and (nested) checksum tests automatically for a given binary executable. Additionally, we show that our techniques outperform various state-of-the-art tools on a wide variety of targets across different privilege levels (kernel-space and userland) with no platform-specific code. REDQUEEN is the first method to find more than 100% of the bugs planted in LAvA-M across all targets. Furthermore, we were able to discover 65 new bugs and obtained 16 CVEs in multiple programs and OS kernel drivers. Finally, our evaluation demonstrates that REDQUEEN is fast, widely applicable and outperforms concurrent approaches by up to three orders of magnitude.
引用
收藏
页数:15
相关论文
共 38 条
[21]  
Haller Istvan, 2013, P 22 USENIX C SECURI
[22]   IMF: Inferred Model-based Fuzzer [J].
Han, HyungSeok ;
Cha, Sang Kil .
CCS'17: PROCEEDINGS OF THE 2017 ACM SIGSAC CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY, 2017, :2345-2358
[23]   Enhancing Memory Error Detection for Large-Scale Applications and Fuzz Testing [J].
Han, Wookhyun ;
Joe, Byunggill ;
Lee, Byoungyoung ;
Song, Chengyu ;
Shin, Insik .
25TH ANNUAL NETWORK AND DISTRIBUTED SYSTEM SECURITY SYMPOSIUM (NDSS 2018), 2018,
[24]  
Hsu Chin-Chia, 2018, S NETWORK DISTRIBUTE
[25]   Steelix: Program-State Based Binary Fuzzing [J].
Li, Yuekang ;
Chen, Bihuan ;
Chandramohan, Mahinthan ;
Lin, Shang-Wei ;
Liu, Yang ;
Tiu, Alwen .
ESEC/FSE 2017: PROCEEDINGS OF THE 2017 11TH JOINT MEETING ON FOUNDATIONS OF SOFTWARE ENGINEERING, 2017, :627-637
[26]   Pin: Building customized program analysis tools with dynamic instrumentation [J].
Luk, CK ;
Cohn, R ;
Muth, R ;
Patil, H ;
Klauser, A ;
Lowney, G ;
Wallace, S ;
Reddi, VJ ;
Hazelwood, K .
ACM SIGPLAN NOTICES, 2005, 40 (06) :190-200
[27]  
Molnar D., 2009, 18 USENIX SEC S MONT, P67
[28]   T-Fuzz: fuzzing by program transformation [J].
Peng, Hui ;
Shoshitaishvili, Yan ;
Payer, Mathias .
2018 IEEE SYMPOSIUM ON SECURITY AND PRIVACY (SP), 2018, :697-710
[29]   VUzzer: Application-aware Evolutionary Fuzzing [J].
Rawat, Sanjay ;
Jain, Vivek ;
Kumar, Ashish ;
Cojocar, Lucian ;
Giuffrida, Cristiano ;
Bos, Herbert .
24TH ANNUAL NETWORK AND DISTRIBUTED SYSTEM SECURITY SYMPOSIUM (NDSS 2017), 2017,
[30]  
Rebert A, 2014, PROCEEDINGS OF THE 23RD USENIX SECURITY SYMPOSIUM, P861