Новости
Направленный фаззинг 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
Для цитирования
Полный текст статьи в формате pdf (на английском)
Вернуться к содержанию тома