Enhancing Memory Error Detection for Large-Scale Applications and Fuzz Testing

被引:20
作者
Han, Wookhyun [1 ]
Joe, Byunggill [1 ]
Lee, Byoungyoung [2 ]
Song, Chengyu [3 ]
Shin, Insik [1 ]
机构
[1] Korea Adv Inst Sci & Technol, Daejeon, South Korea
[2] Purdue Univ, W Lafayette, IN 47907 USA
[3] Univ Calif Riverside, Riverside, CA 92521 USA
来源
25TH ANNUAL NETWORK AND DISTRIBUTED SYSTEM SECURITY SYMPOSIUM (NDSS 2018) | 2018年
关键词
D O I
10.14722/ndss.2018.23312
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
Memory errors are one of the most common vulnerabilities for the popularity of memory unsafe languages including C and C++. Once exploited, it can easily lead to system crash (i.e., denial-of-service attacks) or allow adversaries to fully compromise the victim system. This paper proposes MEDS, a practical memory error detector. MEDS significantly enhances its detection capability by approximating two ideal properties, called an infinite gap and an infinite heap. The approximated infinite gap of MEDS setups large inaccessible memory region between objects (i.e., 4 MB), and the approximated infinite heap allows MEDS to fully utilize virtual address space (i.e., 45-bits memory space). The key idea of MEDS in achieving these properties is a novel user-space memory allocation mechanism, MEDSALLOC. MEDSALLOC leverages a page aliasing mechanism, which allows MEDS to maximize the virtual memory space utilization but minimize the physical memory uses. To highlight the detection capability and practical impacts of MEDS, we evaluated and then compared to Google's state-of-the-art detection tool, AddressSanitizer. MEDS showed three times better detection rates on four real-world vulnerabilities in Chrome and Firefox. More importantly, when used for a fuzz testing, MEDS was able to identify 68.3% more memory errors than AddressSanitizer for the same amount of a testing time, highlighting its practical aspects in the software testing area. In terms of performance overhead, MEDS slowed down 108% and 86% compared to native execution and AddressSanitizer, respectively, on real-world applications including Chrome, Firefox, Apache, Nginx, and OpenSSL.
引用
收藏
页数:15
相关论文
共 39 条
[1]  
Abadi M., ACM C COMP COMM SEC
[2]  
Andersen S, 2004, Data execution prevention: Changes to functionality in Microsoft Windows XP Service Pack 2, Part 3: Memory protection technologies
[3]  
[Anonymous], 2014, PROC ANN IEEEACM INT
[4]  
[Anonymous], 2014, WHAT IS MEMORY SAFET
[5]  
[Anonymous], 2009, P LINUX S, P19
[6]  
Apple, 2012, IOS SEC
[7]  
Berger ED, 2006, ACM SIGPLAN NOTICES, V41, P158, DOI 10.1145/1133981.1134000
[8]   Juliet 1.1 C/C++ and Java']Java Test Suite [J].
Boland, Tim ;
Black, Paul E. .
COMPUTER, 2012, 45 (10) :88-90
[9]  
Castro M, 2006, Usenix Association 7th Usenix Symposium on Operating Systems Design and Implementation, P147
[10]  
Cowan C, 1998, PROCEEDINGS OF THE SEVENTH USENIX SECURITY SYMPOSIUM, P63