Направленный фаззинг Rust и Go с помощью LibAFL-DiFuzz


Направленный фаззинг Rust и Go с помощью LibAFL-DiFuzz

Межуев Т.П. (ИСП РАН, Москва, Россия; МГУ, Москва, Россия)
Парыгина Д.А. (МГУ, Москва, Россия)
Куц Д.О. (ИСП РАН, Москва, Россия)

Аннотация

В современном мире при использовании подходов безопасной разработки ПО анализ программ и автоматическое тестирование имеют важное значение для минимизации уязвимостей перед выпуском программного обеспечения, при этом фаззинг является быстрым и широко используемым методом динамического тестирования. Однако традиционный фаззинг с обратной связью по покрытию может быть менее эффективен в некоторых задачах, таких как проверка срабатываний статического анализа или воспроизведение ошибок, где более эффективным оказывается направленный фаззинг, ориентированный на достижение целевых точек программы с использованием метрик близости. Одними из первых направленных фаззеров являются, например, AFLGo и BEACON, которые используют разные подходы метрик близости. Хотя большинство инструментов автоматического тестирования ориентированы на анализ C/C++ кода, растущая популярность Rust и Go вызывает потребность в точных и эффективных решениях для их анализа. Данная работа расширяет применимость направленного фаззинга за пределы традиционного анализа ПО на языках C/C++. Мы представляем новый подход к направленному фаззингу, специально разработанный для приложений на языках Rust и Go. Мы предлагаем новые методы предварительной обработки программы, оптимизации компилятора rustc, а также специальные методы построения графов и инструментации для обеспечения эффективного достижения целевых точек в программе. Реализованные нами инструменты направленного фаззинга для Rust и Go, основанные на инструменте LibAFL-DiFuzz, демонстрируют конкурентные преимущества по сравнению с популярными существующими фаззерами для этих языков, такими как afl.rs, cargo-fuzz и go-fuzz. Согласно экспериментам по метрике TTE (Time to Exposure), Rust-LibAFL-DiFuzz превосходит другие инструменты по наилучшему результату. Некоторые проблемы со стабильностью могут быть объяснены различными подходами к мутации входных данных. Go-LibAFL-DiFuzz превосходит своего оппонента по лучшим показателям и, в большинстве случаев, по среднему результату, имея два случая с разницей в несколько порядков. Эти результаты доказывают более высокую эффективность и точность нашего подхода.

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

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

Издание

Труды Института системного программирования РАН, том 38, вып. 2, 2026, стр. 69-82.

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

DOI: 10.15514/ISPRAS-2026-38(2)-5

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

Межуев Т.П., Парыгина Д.А., Куц Д.О. Направленный фаззинг Rust и Go с помощью LibAFL-DiFuzz. Труды Института системного программирования РАН, том 38, вып. 2, 2026, стр. 69-82. DOI: 10.15514/ISPRAS-2026-38(2)-5.

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