RUS  ENG
Полная версия
ЖУРНАЛЫ // Труды института системного программирования РАН // Архив

Труды ИСП РАН, 2018, том 30, выпуск 3, страницы 7–20 (Mi tisp321)

Эта публикация цитируется в 1 статье

Обнаружение ошибок, возникающих при использовании динамической памяти после её освобождения

С. А. Асрянa, С. С. Гайсарянbcde, Ш. Ф. Курмангалеевd, А. М. Агабалянf, Н. Г. Овсепянf, С. С. Саргсянf

a Институт проблем информатики и автоматизации НАН РА
b МГУ имени М. В. Ломоносова
c Московский физико-технический институт
d Институт системного программирования им. В.П. Иванникова РАН
e Национальный исследовательский университет «Высшая школа экономики»
f Ереванский государственный университет

Аннотация: Существенная часть программного обеспечения написана на языках программирования C/C++. Программы на этих языках часто содержат ошибки: использования памяти после освобождения (Use After Free, UAF), переполнения буфера (Buffer Overflow) и др. В статье предложен метод обнаружения ошибок UAF, основанный на динамическом анализе. Для каждого пути выполнения программы предлагаемый метод проверяет корректность операций создания и доступа, а также освобождения динамической памяти. Поскольку применяется динамический анализ, поиск ошибок производится только в той части кода, которая была непосредственно выполнена. Используется символьное исполнение программы с применением решателей SMT (Satisfiability Modulo Theories) [12]. Это позволяет сгенерировать данные, обработка которых приводит к обнаружению нового пути выполнения.

Ключевые слова: динамический анализ программ, покрытие кода, use-after-free.

DOI: 10.15514/ISPRAS-2018-30(3)-1



Реферативные базы данных:


© МИАН, 2024