DocumentCode
68329
Title
Software Crash Analysis for Automatic Exploit Generation on Binary Programs
Author
Shih-Kun Huang ; Min-Hsiang Huang ; Po-Yen Huang ; Han-Lin Lu ; Chung-Wei Lai
Author_Institution
Inf. Technol. Service Center, Nat. Chiao Tung Univ., Hsinchu, Taiwan
Volume
63
Issue
1
fYear
2014
fDate
Mar-14
Firstpage
270
Lastpage
289
Abstract
This paper presents a new method, capable of automatically generating attacks on binary programs from software crashes. We analyze software crashes with a symbolic failure model by performing concolic executions following the failure directed paths, using a whole system environment model and concrete address mapped symbolic memory in S2 E. We propose a new selective symbolic input method and lazy evaluation on pseudo symbolic variables to handle symbolic pointers and speed up the process. This is an end-to-end approach able to create exploits from crash inputs or existing exploits for various applications, including most of the existing benchmark programs, and several large scale applications, such as a word processor (Microsoft office word), a media player (mpalyer), an archiver (unrar), or a pdf reader (foxit). We can deal with vulnerability types including stack and heap overflows, format string, and the use of uninitialized variables. Notably, these applications have become software fuzz testing targets, but still require a manual process with security knowledge to produce mitigation-hardened exploits. Using this method to generate exploits is an automated process for software failures without source code. The proposed method is simpler, more general, faster, and can be scaled to larger programs than existing systems. We produce the exploits within one minute for most of the benchmark programs, including mplayer. We also transform existing exploits of Microsoft office word into new exploits within four minutes. The best speedup is 7,211 times faster than the initial attempt. For heap overflow vulnerability, we can automatically exploit the unlink() macro of glibc, which formerly requires sophisticated hacking efforts.
Keywords
computer crime; program diagnostics; program testing; software fault tolerance; symbol manipulation; Microsoft office word; S2E; archiver; attack generation; automatic exploit generation; binary programs; concolic executions; end-to-end approach; format string; foxit; heap overflows; mapped symbolic memory; media player; mitigation-hardened exploits; mpalyer; pdf reader; pseudo symbolic variables; software crash analysis; software failures; software fuzz testing targets; sophisticated hacking efforts; stack overflows; symbolic failure model; symbolic pointers; unrar; word processor; Analytical models; Computer crashes; Concrete; Libraries; Registers; Security; Software; Automatic exploit generation; bug forensics; software crash analysis; symbolic execution; taint analysis;
fLanguage
English
Journal_Title
Reliability, IEEE Transactions on
Publisher
ieee
ISSN
0018-9529
Type
jour
DOI
10.1109/TR.2014.2299198
Filename
6717039
Link To Document