ACM Home Page
Please provide us with feedback. Feedback
Loop-extended symbolic execution on binary programs
Full text PdfPdf (491 KB)
Source
International Symposium on Software Testing and Analysis archive
Proceedings of the eighteenth international symposium on Software testing and analysis table of contents
Chicago, IL, USA
SESSION: Testing and analysis tools #2 table of contents
Pages 225-236  
Year of Publication: 2009
ISBN:978-1-60558-338-9
Authors
Prateek Saxena  University of California, Berkeley, Berkeley, CA, USA
Pongsin Poosankam  Carnegie Mellon University, Pittsburgh, PA, USA
Stephen McCamant  University of California, Berkeley, CA, USA
Dawn Song  University of California, Berkeley, CA, USA
Sponsors
SIGSOFT: ACM Special Interest Group on Software Engineering
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 51,   Downloads (12 Months): 86,   Citation Count: 0
Additional Information:

abstract   references   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1572272.1572299
What is a DOI?

ABSTRACT

Mixed concrete and symbolic execution is an important technique for finding and understanding software bugs, including security-relevant ones. However, existing symbolic execution techniques are limited to examining one execution path at a time, in which symbolic variables reflect only direct data dependencies. We introduce loop-extended symbolic execution, a generalization that broadens the coverage of symbolic results in programs with loops. It introduces symbolic variables for the number of times each loop executes, and links these with features of a known input grammar such as variable-length or repeating fields. This allows the symbolic constraints to cover a class of paths that includes different numbers of loop iterations, expressing loop-dependent program values in terms of properties of the input. By performing more reasoning symbolically, instead of by undirected exploration, applications of loop-extended symbolic execution can achieve better results and/or require fewer program executions. To demonstrate our technique, we apply it to the problem of discovering and diagnosing buffer-overflow vulnerabilities in software given only in binary form. Our tool finds vulnerabilities in both a standard benchmark suite and 3 real-world applications, after generating only a handful of candidate inputs, and also diagnoses general vulnerability conditions.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
 
2
G. Balakrishnan and T. W. Reps. Analyzing memory accesses in x86 executables. In Compiler Construction, Apr. 2004.
 
3
G. Balakrishnan and T. W. Reps. DIVINE: DIscovering Variables IN Executables. In Verification, Model Checking, and Abstract Interpretation (VMCAI), Jan. 2007.
 
4
BitBlaze: Binary analysis for computer security. http://bitblaze.cs.berkeley.edu/.
 
5
 
6
 
7
 
8
 
9
 
10
J. Caballero, Z. Liang, P. Poosankam, and D. Song. Towards generating high coverage vulnerability-based signatures with protocol-level constraint-guided exploration. Technical Report CMU-CyLab-08-009, Cylab, Carnegie Mellon University, June 2008.
11
 
12
C. Cadar and D. Engler. Execution generated test cases: How to make systems code crash itself. In Model Checking Software, 12th SPIN Workshop, Aug. 2005.
13
14
15
16
17
 
18
19
20
 
21
V. Ganesh and D. L. Dill. A decision procedure for bit-vectors and arrays. In Computer Aided Verification, July 2007.
 
22
ghttpd. http://gaztek.sf.net/ghttpd/.
23
24
25
 
26
P. Godefroid, M. Y. Levin, and D. Molnar. Automated whitebox fuzz testing. In Network and Distributed System Security, Feb. 2008.
27
 
28
IDA Pro. http://www.hex-rays.com/idapro/.
 
29
S. C. Johnson. Yacc: Yet another compiler-compiler. Technical Report (Computer Science) No. 32, Bell Laboratories, July 1975.
 
30
M. Karr. Affine relationships among variables of a program. Acta Informatica, 6:133--151, 1976.
 
31
Z. Lin, X. Jiang, D. Xu, and X. Zhang. Automatic protocol format reverse engineering through context-aware monitored execution. In Network and Distributed System Security, Feb. 2008.
32
33
 
34
Microsoft Corporation. Microsoft security bulletin MS07-046: Vulnerability in GDI could allow remote code execution, Aug. 2007.
 
35
Microsoft Corporation. SQL Server Resolution Protocol Specification, Jan. 2009. Revision 0.6.1.
 
36
 
37
38
 
39
J. Newsome and D. Song. Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software. In Network and Distributed System Security, Feb. 2005.
40
41
 
42
 
43
Wireshark. http://www.wireshark.org.
 
44
G. Wondracek, P. M. Comparetti, C. Kruegel, and E. Kirda. Automatic network protocol analysis. In Network and Distributed System Security, Feb. 2008.
45
46
47

Collaborative Colleagues:
Prateek Saxena: colleagues
Pongsin Poosankam: colleagues
Stephen McCamant: colleagues
Dawn Song: colleagues