|
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
|
Alfred V. Aho , Monica S. Lam , Ravi Sethi , Jeffrey D. Ullman, Compilers: Principles, Techniques, and Tools (2nd Edition), Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 2006
|
| |
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
|
Nikolaj Bjørner , Nikolai Tillmann , Andrei Voronkov, Path Feasibility Analysis for String-Manipulating Programs, Proceedings of the 15th International Conference on Tools and Algorithms for the Construction and Analysis of Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009,, March 22-29, 2009, York, UK
[doi> 10.1007/978-3-642-00768-2_27]
|
| |
6
|
David Brumley , Juan Caballero , Zhenkai Liang , James Newsome , Dawn Song, Towards automatic discovery of deviations in binary implementations with applications to error detection and fingerprint generation, Proceedings of 16th USENIX Security Symposium on USENIX Security Symposium, p.1-16, August 06-10, 2007, Boston, MA
|
| |
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
|
Juan Caballero , Heng Yin , Zhenkai Liang , Dawn Song, Polyglot: automatic extraction of protocol message format using dynamic binary analysis, Proceedings of the 14th ACM conference on Computer and communications security, October 28-31, 2007, Alexandria, Virginia, USA
[doi> 10.1145/1315245.1315286]
|
| |
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
|
Cristian Cadar , Vijay Ganesh , Peter M. Pawlowski , David L. Dill , Dawson R. Engler, EXE: automatically generating inputs of death, Proceedings of the 13th ACM conference on Computer and communications security, October 30-November 03, 2006, Alexandria, Virginia, USA
[doi> 10.1145/1180405.1180445]
|
 |
14
|
Manuel Costa , Miguel Castro , Lidong Zhou , Lintao Zhang , Marcus Peinado, Bouncer: securing software by blocking bad input, Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles, October 14-17, 2007, Stevenson, Washington, USA
|
 |
15
|
Manuel Costa , Jon Crowcroft , Miguel Castro , Antony Rowstron , Lidong Zhou , Lintao Zhang , Paul Barham, Vigilante: end-to-end containment of internet worms, Proceedings of the twentieth ACM symposium on Operating systems principles, October 23-26, 2005, Brighton, United Kingdom
|
 |
16
|
|
 |
17
|
|
| |
18
|
|
 |
19
|
|
 |
20
|
Vinod Ganapathy , Somesh Jha , David Chandler , David Melski , David Vitek, Buffer overrun detection using linear programming and static analysis, Proceedings of the 10th ACM conference on Computer and communications security, October 27-30, 2003, Washington D.C., USA
[doi> 10.1145/948109.948155]
|
| |
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
|
David Moore , Vern Paxson , Stefan Savage , Colleen Shannon , Stuart Staniford , Nicholas Weaver, Inside the Slammer Worm, IEEE Security and Privacy, v.1 n.4, p.33-39, July 2003
[doi> 10.1109/MSECP.2003.1219056]
|
 |
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
|
Dawn Song , David Brumley , Heng Yin , Juan Caballero , Ivan Jager , Min Gyung Kang , Zhenkai Liang , James Newsome , Pongsin Poosankam , Prateek Saxena, BitBlaze: A New Approach to Computer Security via Binary Analysis, Proceedings of the 4th International Conference on Information Systems Security, December 16-20, 2008, Hyderabad, India
[doi> 10.1007/978-3-540-89862-7_1]
|
| |
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
|
|
|