ИСП Fuzzer – инструмент проведения фаззинг-тестирования, необходимый на всех этапах разработки, тестирования и эксплуатации ПО. Обнаруживает ошибки или закладки как при наличии, так и при отсутствии исходного кода.  Решает те же задачи, что и мировые аналоги (Synopsys Codenomicon, beSTORM, Peach Fuzzer), однако более удобен для российских компаний в условиях процесса импортозамещения. Разработан в Отделе компиляторных технологий ИСП РАН.

ИСП Fuzzer – это:

  • Осуществление фаззинг-тестирования через различные источники внешних данных (файл, аргументы командной строки, стандартный поток ввода, аргументы переменных окружений, сеть).
  • Возможность добавления пользовательских мутационных преобразований (для генерации новых входных данных и увеличения эффективности тестирования).
  • Наличие модулей пред- и постобработки входных данных для осуществления константных преобразований над данными перед их отправкой в анализируемое ПО.
  • Поддержка многопоточного анализа как на одной машине, так и на распределённых.
  • Поддержка пользовательских плагинов отправки данных по сети (плагины позволяют осуществлять взаимодействие с клиентским или серверным ПО и отправлять мутированные данные).
  • Возможность интеграции с рядом необходимых инструментов жизненного цикла разработки безопасного ПО, созданных в ИСП РАН:
  • использование инструментов динамического символьного выполнения SyDr и Anxiety для повышения эффективности фаззинг-тестирования;
  • возможность получать входные данные, на которых проявляются ошибки, размеченные инструментом статического анализа BinSide в автоматическом режиме;
  • отображение трассы последовательности функций, приводящих к аварийному завершению, в интерфейсе статического анализатора Svace;
  • использование генератора данных по формальным грамматикам ANTLR для формирования корпуса входных данных.
  • Совместная работа с дизассемблером IDA PRO (сохранение покрытия для плагина Lighthouse, которое отображает покрытые базовые блоки в ПО, а также вывод процента покрытых базовых блоков).
  • Возможность проведения анализа серверного и клиентского ПО, работающего по протоколам с состояниями и без состояний.
  • Возможность запуска систем динамического анализа на новых входных данных (Valgrind, DrMemory, QASan).
  • Лёгкая расширяемость и добавление новых методов в рамках существующей инфраструктуры; оперативная адаптация под новые задачи.
  • Возможность распределения корпуса входных данных между процессами фаззеров для повышения эффективности их работы.
  • Оценка критичности найденных аварийных завершений.
  • Использование фаззера Radamsa для генерации новых данных.
  • Поддержка различных видов инструментации: DynamoRIO, QemuUserMode, статическая инструментация GCC, статическая инструментация LLVM, QemuSystemArm.

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

Поддержка ОС семейства Linux и Windows. Возможность проводить фаззинг-тестирование встроенных устройств (контроллеры, устройства интернета вещей), а также сервисов и COM-объектов ОС Windows.

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

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

Схема работы