|
Эта публикация цитируется в 2 научных статьях (всего в 2 статьях)
Построение предикатов безопасности для некоторых типов программных дефектов
А. Н. Федотовa, В. В. Каушанa, С. С. Гайсарянabcd, Ш. Ф. Курмангалеевa a Институт системного программирования им. В.П. Иванникова РАН
b МГУ имени М.В. Ломоносова
c Национальный исследовательский университет «Высшая школа экономики»
d Московский физико-технический институт
Аннотация:
В статье рассматриваются подходы и способы выполнения кода с использованием уязвимостей в программах. В частности, рассмотрены способы выполнения кода для переполнения буфера на стеке и в динамической памяти, для уязвимости использования памяти после освобождения и для уязвимости форматной строки. Описываются методы и подходы, позволяющие автоматически получать наборы входных данных, которые приводят к выполнению произвольного кода. В основе этих подходов лежит использование символьной интерпретации. Динамическое символьное выполнение предоставляет набор входных данных, который направляет программу по пути активации уязвимости. Предикат безопасности представляет собой дополнительные символьные уравнения и неравенства, описывающие требуемое состояние программы, наступающее при обработке пакета данных, например, передача управления на требуемый адрес. Объединив предикаты пути и безопасности, а затем решив полученную систему уравнений, можно получить набор входных данных, приводящий программу к выполнению кода. В работе представлены предикаты безопасности для перезаписи указателя, перезаписи указателя на функцию и уязвимости форматной строки, которая приводит к переполнению буфера на стеке. Описанные предикаты безопасности использовались в методе оценки критичности программных дефектов. Проверка работоспособности предикатов безопасности оценивалась на наборе тестов, который использовался в конкурсе Darpa Cyber Grand Challenge. Тестирование предиката безопасности для уязвимости форматной строки, приводящей к переполнению буфера, проводилось на программе Ollydbg, содержащей эту уязвимость. Для некоторых примеров удалось получить входные данные, приводящие к выполнению кода, что подтверждает работоспособность предикатов безопасности.
Ключевые слова:
ошибки, символьное выполнение, предикат безопасности, анализ бинарного кода, динамический анализ.
Образец цитирования:
А. Н. Федотов, В. В. Каушан, С. С. Гайсарян, Ш. Ф. Курмангалеев, “Построение предикатов безопасности для некоторых типов программных дефектов”, Труды ИСП РАН, 29:6 (2017), 151–162
Образцы ссылок на эту страницу:
https://www.mathnet.ru/rus/tisp278 https://www.mathnet.ru/rus/tisp/v29/i6/p151
|
Статистика просмотров: |
Страница аннотации: | 229 | PDF полного текста: | 132 | Список литературы: | 37 |
|