Using static symbolic execution to detect buffer overflows


Cite item

Full Text

Open Access Open Access
Restricted Access Access granted
Restricted Access Subscription Access

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

Supplementary Files
Action
1. JATS XML

Copyright (c) 2017 Pleiades Publishing, Ltd.