DocumentCode
635198
Title
Segmented symbolic analysis
Author
Wei Le
Author_Institution
Rochester Inst. of Technol., Rochester, NY, USA
fYear
2013
fDate
18-26 May 2013
Firstpage
212
Lastpage
221
Abstract
Symbolic analysis is indispensable for software tools that require program semantic information at compile time. However, determining symbolic values for program variables related to loops and library calls is challenging, as the computation and data related to loops can have statically unknown bounds, and the library sources are typically not available at compile time. In this paper, we propose segmented symbolic analysis, a hybrid technique that enables fully automatic symbolic analysis even for the traditionally challenging code of library calls and loops. The novelties of this work are threefold: 1) we flexibly weave symbolic and concrete executions on the selected parts of the program based on demand; 2) dynamic executions are performed on the unit tests constructed from the code segments to infer program semantics needed by static analysis; and 3) the dynamic information from multiple runs is aggregated via regression analysis. We developed the Helium framework, consisting of a static component that performs symbolic analysis and partitions a program, a dynamic analysis that synthesizes unit tests and automatically infers symbolic values for program variables, and a protocol that enables static and dynamic analyses to be run interactively and concurrently. Our experimental results show that by handling loops and library calls that a traditional symbolic analysis cannot process, segmented symbolic analysis detects 5 times more buffer overflows. The technique is scalable for real-world programs such as putty, tightvnc and snort.
Keywords
program compilers; program diagnostics; regression analysis; software libraries; software tools; buffer overflow; code segments; concrete execution; dynamic analysis; dynamic executions; handling loops; helium framework; library calls; library loops; program semantic information; program semantics; program variables; regression analysis; segmented symbolic analysis; software tools; static analysis; static component; symbolic execution; symbolic partitions; Analytical models; Cognition; Helium; Libraries; Performance analysis; Regression analysis; Semantics;
fLanguage
English
Publisher
ieee
Conference_Titel
Software Engineering (ICSE), 2013 35th International Conference on
Conference_Location
San Francisco, CA
Print_ISBN
978-1-4673-3073-2
Type
conf
DOI
10.1109/ICSE.2013.6606567
Filename
6606567
Link To Document