|
Эта публикация цитируется в 1 научной статье (всего в 1 статье)
Обнаружение ошибок доступа к буферу в программах на языке C/C++ с помощью статического анализа
И. А. Дудинаab a Московский государственный университет имени М.В. Ломоносова
b Институт системного программирования РАН
Аннотация:
В данной работе рассматривается метод поиска межпроцедурных ошибок доступа к буферу с помощью статического анализа. В основе рассматриваемого подхода лежит разработанный ранее алгоритм внутрипроцедурного анализа на базе символьного исполнения с объединением состояний, который является чувствительным к путям и учитывает взаимосвязи между переменными, такие как сравнения, арифметические операции и инструкции приведения типа. В работе предложено формальное определение межпроцедурного дефекта и рассмотрены некоторые типы межпроцедурных ошибок доступа к буферу. Межпроцедурный анализ реализован с помощью метода резюме, что позволяет в некоторой степени добиться контекстной чувствительности. Показано, как можно расширить внутрипроцедурный алгоритм для отслеживания межпроцедурных связей между переменными. Кроме этого, приведен алгоритм построения двух типов достаточных условий наличия ошибки доступа к буферу в функции, которые сохраняются в резюме и проверяются при вызове этой функции. Описанный подход был реализован в инструменте статического анализа Svace. На проекте Android 5.0.2 было получено 351 предупреждение об ошибке доступа к буферу, среди которых 64% оказались истинными, при этом существенного замедления анализа не произошло.
Ключевые слова:
статический анализ, поиск дефектов, переполнение буфера, чувствительность к путям, контекстная чувствительность, межпроцедурный анализ, символьное исполнение.
Образец цитирования:
И. А. Дудина, “Обнаружение ошибок доступа к буферу в программах на языке C/C++ с помощью статического анализа”, Труды ИСП РАН, 28:5 (2016), 119–134
Образцы ссылок на эту страницу:
https://www.mathnet.ru/rus/tisp71 https://www.mathnet.ru/rus/tisp/v28/i5/p119
|
|