Комплекс гибридного фаззинга и динамического анализа Sydr-fuzz


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

Комплекс гибридного фаззинга и динамического анализа Sydr-fuzz

Sydr – инструмент динамического символьного выполнения бинарных программ, используемый для автоматической генерации тестов для сложных программных систем с целью увеличения покрытия кода и обнаружения ошибок. Cтроит математическую модель программы, позволяя фаззеру открывать новые пути выполнения, которые сложно обнаружить классическими методами генетических мутаций. Разработанные методы развивают технологию символьного выполнения, представленную в созданных ранее в ИСП РАН инструментах Avalanche и Anxiety. Sydr-fuzz – инструмент динамического анализа программ для безопасного цикла разработки ПО, который реализует гибридный фаззинг с использованием Sydr и современных фаззеров (libFuzzer и AFL++), а также автоматизирует этапы сбора покрытия, минимизации корпуса и анализа аварийных завершений. Сайт проекта: sydr-fuzz.github.io.

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

В отличие от аналогичных открытых инструментов, Sydr проверяет результаты своей работы на корректность и определяет, действительно ли сгенерированные входные данные приводят к инвертированию целевых переходов. Sydr-fuzz предоставляет возможности для удобной автоматизации пайплайна динамического анализа:

  • фаззинг / гибридный фаззинг: sydr-fuzz run;
  • минимизация корпуса: sydr-fuzz cmin;
  • поиск ошибок с помощью предикатов безопасности: sydr-fuzz security;
  • сбор покрытия: sydr-fuzz cov-report;
  • создание отчётов, дедупликация и кластеризация и оценка критичности аварийных завершений с использованием Casr: sydr-fuzz casr.

Sydr-fuzz — это:

  • Гибридный фаззинг Sydr и libFuzzer/AFL++ проектов на C/C++, Rust, Go.
  • Автоматизация фаззинга и всего пайплайна динамического анализа Python/Java/JavaScript/C# проектов с помощью инструментов Atheris/Jazzer/Jazzer.jz/SharpFuzz.
  • Эффективность на уровне мировых аналогов: регулярный бенчмаркинг фаззинга (https://sydr-fuzz.github.io/fuzzbench/).
  • Репозиторий с настроенными проектами под фаззинг: 84 проекта (более 400 уникальных фаззинг-целей) в OSS-Sydr-Fuzz (https://github.com/ispras/oss-sydr-fuzz).
  • Достижения: Sydr-fuzz нашел 172 новых ошибок в 31 проекте с открытым исходным кодом (https://github.com/ispras/oss-sydr-fuzz/blob/master/TROPHIES.md), 30 ошибок найдено с помощью предикатов безопасности.
  • Эффективное символьное выполнение программ (concolic execution). Параллельное инвертирование и кэширование условных переходов, слайсинг формул из предиката пути, эвристика оптимистичных решений, высокоуровневое моделирование стандартных функций и использование производительного SMT-решателя Bitwuzla значительно ускоряют анализ. Реализованы алгоритмы по анализу неявных зависимостей (косвенные переходы, jump-таблицы и символьные указатели).
  • Удобная автоматизация динамического анализа. Унификация запуска и результатов для различных фаззеров. Удобная настройка фаззинг-кампании с помощью конфигурационного файла. Поддержка параллельного фаззинга, вывод статистики, возможность одновременного запуска Sydr + libFuzzer + AFL++.
  • Предикаты безопасности. Поиск ошибок методами символьного выполнения, заключающийся в генерации данных, приводящих к проявлению дефекта: деление на ноль, разыменование нулевого указателя, выход за границы массива, целочисленное переполнение, целочисленное усечение, ошибки форматной строки, внедрение команд.

Системные требования

Запуск на платформах архитектуры x86_64, Aarch64 и RISCV64. Поддержка 64-битных ОС семейства Linux: Ubuntu 18.04/20.04/22.04, Astra 1.7, ALT Workstation 10.0 и аналогов.

Опыт внедрения

Sydr и Sydr-fuzz входят в состав программного комплекса ИСП Crusher, который в разной комплектации используется более чем в 70 компаниях и лабораториях, в том числе в ОАО «РусБИТех», Postgres Professional, ООО «Код Безопасности», МВП «СВЕМЕЛ» и др. Используется в Исследовательском центре доверенного искусственного интеллекта ИСП РАН.

Схема работы Sydr

Схема работы Sydr

Публикации

  1. Vishnyakov A., Fedotov A., Kuts D., Novikov A., Parygina D., Kobrin E., Logunova V., Belecky P., Kurmangaleev Sh. Sydr: Cutting Edge Dynamic Symbolic Execution. 2020 Ivannikov ISPRAS Open Conference (ISPRAS), IEEE, 2020. Скачать презентацию

Разработчик/участник

Компиляторные технологии

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