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

Труды ИСП РАН, 2022, том 34, выпуск 2, страницы 25–42 (Mi tisp675)

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

Поиск ошибок в бинарном коде методами динамической символьной интерпретации

А. В. Вишняковa, И. А. Кобринba, А. Н. Федотовa

a Институт системного программирования РАН
b Московский государственный университет имени М. В. Ломоносова

Аннотация: Современное программное обеспечение стремительно развивается, принося новые ошибки, и все больше компаний следуют безопасному циклу разработки ПО. Одними из самых популярных средств для поддержки безопасного цикла разработки являются фаззинг и символьная интерпретация программ, позволяющие автоматически тестировать программу и искать в ней ошибки. Гибридный фаззинг — наиболее эффективный подход, который заключается в применении комбинации этих двух техник, при котором две техники работают совместно. Другим способом искать программные ошибки является символьная интерпретация с использованием предикатов безопасности — условий на входные данные, при выполнении которых будет проявлена ошибка. В этой работе мы предлагаем метод автоматизированного поиска ошибок с помощью динамической символьной интерпретации, совмещающий гибридный фаззинг с проверкой предикатов безопасности. Гибридный фаззинг требуется для получения большого количества различных входных данных, а ошибки работы с памятью и неопределенного поведения в программах ищут предикаты безопасности, которые позволяют находить ошибки деления на нуль, выхода за границы массива, целочисленного переполнения и другие. Результаты работы предикатов безопасности верифицируются с помощью санитайзеров, чтобы отбросить ложно положительные срабатывания. В результате практического применения предложенного метода к программам с открытым исходным кодом было найдено 11 различных новых ошибок в 5 разных проектах.

Ключевые слова: динамическая символьная интерпретация, DSE, фаззинг, предикат безопасности, автоматическое обнаружение ошибок, безопасный цикл разработки, SDL, бинарный код, санитайзер, ошибка, CWE

DOI: 10.15514/ISPRAS-2022-34(2)-3



© МИАН, 2024