Инструмент направленного фаззинга LibAFL-DiFuzz


Скачать сборник технологий

Видеоролик о технологиях ИСП РАН

Инструмент направленного фаззинга LibAFL-DiFuzz

LibAFL-DiFuzz — это инструмент направленного фаззинга, основанный на модульной архитектуре фаззера LibAFL и инструменте статической предобработки DiFuzz. LibAFL-DiFuzz позволяет выполнять фаззинг-тестирование, фокусируясь на достижении определенных участков кода. Данный вид анализа применяется для анализа патчей, воспроизведения ошибок, верификации предупреждений статического анализа. «Направление» фаззинга задается с помощью одной или нескольких целевых точек в исходном коде программы. Процесс направленного фаззинга начинается со статической предобработки тестируемой программы, в ходе которой формируются специальные метрики для анализа. В процессе фаззинга LibAFL-DiFuzz отслеживает состояние программы и адаптивно распределяет ресурсы для генерирования входных данных. Это значительно увеличивает скорость и вероятность достижения указанных участков кода.

Особенности и преимущества

В отличие от аналогичных открытых инструментов, LibAFL-DiFuzz поддерживает гибкую и удобную конфигурацию, сигнализирует о достижении любой целевой точки в коде (не только аварийные завершения), а также поддерживает направленный фаззинг для нескольких целевых точек одновременно. Работа LibAFL-DiFuzz организована в три этапа:

Статическая предобработка. Инструмент Difuzz вы полняет построение графов и деревьев доминаторов, формирует улучшенные целевые последовательности ETS и рассчитывает контекстные веса.

Сборка фаззинг-целей. Специальные компиляторы собирают фаззинг-цели с LibAFL-инструментацией, используя информацию, полученную от Difuzz.

Направленный фаззинг. LibAFL выполняет фаззинг-тестирование и рассчитывает метрику близости к целевым точкам для оценки входных данных. Метрика используется в планировщике энергии для приоритизации генерируемых входных данных.

Основные преимущества LibAFL-DiFuzz:

  • метод планирования энергии во время фаззинга основан на алгоритме имитации отжига.
  • метрика близости к целевым точкам строится на основе графа доминаторов и улучшенных целевых последовательностях (Enhanced Target Sequences, ETS).
  • разрешение неявных вызовов при помощи анализа иерархий наследования.
  • использование контекстных весов при построении целевых последовательностей улучшает точность.
  • гибридный направленный фаззинг с динамическим символьным исполнением Sydr/Sydr-Fuzz.
  • поддержка направленного фаззинга для C/C++/Rust/Go проектов.

Схема работы

Схема LibAFL-DiFuzz

Перейти к списку всех технологий