Sydr – инструмент автоматической генерации тестов для сложных программных систем с целью увеличения покрытия кода и обнаружения ошибок. Cтроит математическую модель программы, позволяя фаззеру открывать новые пути выполнения, которые сложно обнаружить классическими методами генетических мутаций.  Разработанные методы развивают технологию символьного выполнения, представленную в созданных ранее в ИСП РАН инструментах Avalanche и Anxiety. В отличие от аналогичных открытых инструментов, Sydr проверяет результаты своей работы на корректность и определяет, действительно ли сгенерированные входные данные приводят к инвертированию целевых переходов. Разработан в Отделе компиляторных технологий ИСП РАН.

Sydr – это:

  • Инвертирование на конкретном пути выполнения всех условных переходов, которые зависят от входных данных. Реализована возможность параллельного инвертирования.
  • Интеграция с ИСП Fuzzer для инвертирования, что решает проблемы при прохождении переходов, зависящих от сравнения с константами.
  • Решение задач обратной разработки. Помощь аналитику в достижении интересующей его точки в программе. Получение трассы инструкций, которые зависят от входных данных.
  • Поддержка различных источников внешних данных программы (файлы, сетевые сокеты, переменные окружения, стандартный поток ввода, аргументы командной строки).
    • Предикаты безопасности. Генерация входных данных, приводящих к проявлению дефекта (деление на ноль, разыменование нулевого указателя, выход за границы буфера).
    • Символьное выполнение многопоточных программ.
    • Инвертирование косвенных переходов (switch statement). Разработан алгоритм определения таблиц и переходов по вычисляемым адресам.
    • Слайсинг формул. Удаление избыточных формул из предиката пути, которые не влияют на инвертируемый условный переход. Решает проблему недостаточной помеченности, а также ускоряет обработку запросов SMT-решателем.

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

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

Схема работы