Using static symbolic execution to detect buffer overflows
- Авторы: Dudina I.A.1,2, Belevantsev A.A.1,2
-
Учреждения:
- Institute for System Programming
- Faculty of Computational Mathematics and Cybernetics
- Выпуск: Том 43, № 5 (2017)
- Страницы: 277-288
- Раздел: Article
- URL: https://journals.rcsi.science/0361-7688/article/view/176538
- DOI: https://doi.org/10.1134/S0361768817050024
- ID: 176538
Цитировать
Аннотация
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.
Об авторах
I. Dudina
Institute for System Programming; Faculty of Computational Mathematics and Cybernetics
Автор, ответственный за переписку.
Email: eupharina@ispras.ru
Россия, ul. Solzhenitsyna 25, Moscow, 109004; Moscow, 119991
A. Belevantsev
Institute for System Programming; Faculty of Computational Mathematics and Cybernetics
Email: eupharina@ispras.ru
Россия, ul. Solzhenitsyna 25, Moscow, 109004; Moscow, 119991
Дополнительные файлы
