| Precise pointer reasoning for dynamic test generation |
| Full text |
Pdf
(463 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 #1
table of contents
Pages 129-140
Year of Publication: 2009
ISBN:978-1-60558-338-9
|
|
Authors
|
|
| Sponsors |
|
| Publisher |
|
| Bibliometrics |
Downloads (6 Weeks): 21, Downloads (12 Months): 43, Citation Count: 0
|
|
|
ABSTRACT
Dynamic test generation consists of executing a program while gathering symbolic constraints on inputs from predicates encountered in branch statements, and of using a constraint solver to infer new program inputs from previous constraints in order to steer next executions towards new program paths. Variants of this technique have recently been adopted in several bug detection tools, including our whitebox fuzzer SAGE, which has found dozens of new expensive security-related bugs in many Windows applications and is now routinely used in various Microsoft groups. In this paper, we discuss how to perform precise symbolic pointer reasoning in the context of dynamic test generation. We present a new memory model for representing arbitrary symbolic pointer dereferences to memory regions accessible by a program during its execution, and show that this memory model is the most precise one can hope for in our context, under some realistic assumptions. We also describe how the symbolic constraints generated by our model can be solved using modern SMT solvers, which provide powerful constructs for reasoning about bit-vectors and arrays. This new memory model has been implemented in SAGE, and we present results of experiments with several large Windows applications showing that an increase in precision can often be obtained at a reasonable cost. Better precision in symbolic pointer reasoning means more relevant constraints and fewer imprecise ones, hence better test coverage, more bugs found and fewer redundant test cases.
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
|
D. Babic and A. J. Hu. Structural Abstraction of Software Verification Conditions. In Proceedings of CAV'2007 (19th Conference on Computer Aided Verification), Berlin, July 2007.
|
| |
2
|
M. Barnett, B. E. Chang, R. DeLine, B. Jacobs, and K. R. M. Leino. Boogie: A modular reusable verifier for object-oriented programs. In Proceedings of FMCO'2005 (4th International Symposium on Formal Methods for Components and Objects), volume 4111 of LNCS, pages 364--387. Springer, September 2006.
|
 |
3
|
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]
|
| |
4
|
E. Clarke, D. Kroening, and F. Lerda. A Tool for Checking ANSI-C Programs. In Proceedings of TACAS'2004 (Tools and Algorithms for the Construction and Analysis of Systems), volume 2988 of Lecture Notes in Computer Science, pages 168--176. Springer, 2004.
|
 |
5
|
|
| |
6
|
L. de Moura and N. Bjorner. Z3: An Efficient SMT Solver. In TACAS '08: Tools and Algorithms for the Construction and Analysis of Systems, 2008.
|
 |
7
|
|
 |
8
|
|
| |
9
|
P. Godefroid, M.Y. Levin, and D. Molnar. Automated Whitebox Fuzz Testing. In Proceedings of NDSS'2008 (Network and Distributed Systems Security), pages 151--166, San Diego, February 2008.
|
 |
10
|
Satish Narayanasamy , Zhenghao Wang , Jordan Tigani , Andrew Edwards , Brad Calder, Automatically classifying benign and harmful data racesallusing replay analysis, Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation, June 10-13, 2007, San Diego, California, USA
|
| |
11
|
Pex. Web page: http://research.microsoft.com/Pex.
|
 |
12
|
Mooly Sagiv , Thomas Reps , Reinhard Wilhelm, Solving shape-analysis problems in languages with destructive updating, Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.16-31, January 21-24, 1996, St. Petersburg Beach, Florida, United States
[doi> 10.1145/237721.237725]
|
 |
13
|
|
| |
14
|
Dries Vanoverberghe , Nikolai Tillmann , Frank Piessens, Test Input Generation for Programs with Pointers, 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_25]
|
 |
15
|
|
 |
16
|
|
|