Using static symbolic execution to detect buffer overflows
- Authors: Dudina I.A.1,2, Belevantsev A.A.1,2
-
Affiliations:
- Institute for System Programming
- Faculty of Computational Mathematics and Cybernetics
- Issue: Vol 43, No 5 (2017)
- Pages: 277-288
- Section: Article
- URL: https://journal-vniispk.ru/0361-7688/article/view/176538
- DOI: https://doi.org/10.1134/S0361768817050024
- ID: 176538
Cite item
Abstract
Buffer overrun remains one of the main sources of errors and vulnerabilities in the C/C++ source code. To detect such kind of defects, static analysis is widely used. In this paper, we propose a path-sensitive static analysis based on symbolic execution with state merging. For buffers with compile-time-known sizes, we present an interprocedural path- and context-sensitive overrun detection algorithm that finds program points satisfying a proposed error definition. The described approach was implemented in the Svace static analyzer without significant loss of performance. On Android 5.0.2, these detectors generated 351 warnings, 64% of which were true positives. In addition, we describe a prototype of an intraprocedural heap buffer overflow detector and present an example of a defect found by this detector.
About the authors
I. A. Dudina
Institute for System Programming; Faculty of Computational Mathematics and Cybernetics
Author for correspondence.
Email: eupharina@ispras.ru
Russian Federation, ul. Solzhenitsyna 25, Moscow, 109004; Moscow, 119991
A. A. Belevantsev
Institute for System Programming; Faculty of Computational Mathematics and Cybernetics
Email: eupharina@ispras.ru
Russian Federation, ul. Solzhenitsyna 25, Moscow, 109004; Moscow, 119991
Supplementary files
