Комплекс гибридного фаззинга и динамического анализа 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
Публикации
- 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. Скачать презентацию
Разработчик/участник
Перейти к списку всех технологий