Buffer overflow is one of the most common types of software vulnerabilities. Various static analysis and dynamic testing techniques have been proposed to detect buffer overflow vulnerabilities. With automatic tool support, static buffer overflow detection technique has been widely used in academia and industry. However, it tends to report too many false positives fundamentally due to the lack of software execution information. Currently, static warnings can only be validated by manual inspection, which significantly limits the practicality of the static analysis. In this paper, we present BovInspector, a tool framework for automatic static buffer overflow warnings inspection and validated bugs repair. Given the program source code and static buffer overflow vulnerability warnings, BovInspector first performs warning reachability analysis. Then, BovInspector executes the source code symbolically under the guidance of reachable warnings. Each reachable warning is validated and classified by checking whether all the path conditions and the buffer overflow constraints can be satisfied simultaneously. For each validated true warning, BovInspector fix it with three predefined strategies. BovInspector is complementary to prior static buffer overflow discovery schemes. Experimental results on real open source programs show that BovInspector can automatically inspect on average of 74.9% of total warnings, and false warnings account for about 25% to 100% (on average of 59.9%) of the total inspected warnings. In addition, the automatically generated patches fix all target vulnerabilities. Further information regarding the implementation and experimental results of BovInspector is available at http://bovinspectortool.github.io/project/. And a short video for demonstrating the capabilities of BovInspector is now available at https://youtu.be/IMdcksROJDg.
[1]
Matt Bishop,et al.
Testing C Programs for Buffer Overflow Vulnerabilities
,
2003,
NDSS.
[2]
David Evans,et al.
Improving Security Using Extensible Lightweight Static Analysis
,
2002,
IEEE Softw..
[3]
Mary Lou Soffa,et al.
Marple: a demand-driven path-sensitive buffer overflow detector
,
2008,
SIGSOFT '08/FSE-16.
[4]
Rupak Majumdar,et al.
Testing for buffer overflows with length abstraction
,
2008,
ISSTA '08.
[5]
Martin Rinard,et al.
Automatic Discovery and Patching of Buffer and Integer Overflow Errors
,
2015
.
[6]
Eric Lahtinen,et al.
Automatic error elimination by horizontal code transfer across multiple applications
,
2015,
PLDI.
[7]
Michael D. Ernst,et al.
Automatically patching errors in deployed software
,
2009,
SOSP '09.
[8]
Tao Ye,et al.
An Empirical Study on Detecting and Fixing Buffer Overflow Bugs
,
2016,
2016 IEEE International Conference on Software Testing, Verification and Validation (ICST).
[9]
Mohammad Zulkernine,et al.
Mutation-Based Testing of Buffer Overflow Vulnerabilities
,
2008,
2008 32nd Annual IEEE International Computer Software and Applications Conference.
[10]
David A. Wagner,et al.
A First Step Towards Automated Detection of Buffer Overrun Vulnerabilities
,
2000,
NDSS.