Статический анализатор для распознавания массивов в С-программах для задач фаззинга


Статический анализатор для распознавания массивов в С-программах для задач фаззинга

Кознов Д.В. (СПбГУ, Санкт-Петербург, Россия)
Усачев Д.А. (СПбГУ, Санкт-Петербург, Россия)

Аннотация

В экосистеме тестирования ПО сетевых устройств крупной телекоммуникационной компании активно применяется фаззинг – подход к тестированию, где на вход тестируемой программе подаются случайные, неожиданные или некорректные входные данные. В связи с отсутствием в языке C динамических массивов как таковых для задач фаззинга C-функций оказывается полезной информация о массивах, которые принимаются на вход функциями. В данной работе предлагается специальный вид статического анализа для автоматического распознавания массивов, с которыми работают C-функции, а также определения их длины (аппроксимации). На основе предложенного метода был реализован предметно-ориентированный инструмент, нацеленный на конкретную кодовую базу компании, который при приемлемой производительности смог достичь значений метрик точности 79% и полноты 98% в распознавании массивов, при этом длина массива была правильно определена в 69% случаях. Интеграция нашего инструмента в экосистему тестирования компании позволила значительно улучшить качество фаззинга, увеличив метрику покрытия кодовой базы на 10%, а количество найденных ошибок – на 40%.

Ключевые слова

статический анализ; поиск динамических массивов; фаззинг; язык С; телекоммуникации.

Издание

Труды Института системного программирования РАН, том 38, вып. 3, часть 2, 2026, стр. 33-48.

ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).

DOI: 10.15514/ISPRAS-2026-38(3)-20

Для цитирования

Кознов Д.В., Усачев Д.А. Статический анализатор для распознавания массивов в С-программах для задач фаззинга. Труды Института системного программирования РАН, том 38, вып. 3, часть 2, 2026, стр. 33-48. DOI: 10.15514/ISPRAS-2026-38(3)-20.

Полный текст статьи в формате pdf Вернуться к содержанию тома