ИСП Crusher: комплекс динамического и статического анализа программ


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

ИСП Crusher: комплекс динамического и статического анализа программ

Документация и поддержка | В реестре российского ПО | Оформить лицензию

ИСП Crusher – программный комплекс, комбинирующий несколько методов динамического и статического анализа, в частности, фаззинг (ИСП Fuzzer) и символьное выполнение (в качестве одного из движков может выступать Sydr). В ближайшее время в комплекс планируется включить ещё одну технологию ИСП РАН: BinSide. ИСП Crusher позволяет построить процесс разработки в соответствии с ГОСТ Р 56939-2016 и «Методикой выявления уязвимостей и недекларированных возможностей в программном обеспечении» ФСТЭК России.

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

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

ИСП Fuzzer — это:

  • Фаззинг широкого класса ПО:
    • пользовательские приложения, ядро и библиотеки;
    • приложения на различных языках программирования: C/C++, Java, Python, C#;
    • фаззинг нейронных сетей. Выявляет случаи ошибочных предсказаний нейронной сети при искажении корректно классифицируемых входных данных. Это позволяет найти ошибки в работе сетей для ситуаций, которые изначально не попали в набор данных для обучения;
    • фаззинг-тестирование через различные источники входных данных: файл, аргументы командной строки, стандартный поток ввода, аргументы переменных окружений, сеть, прямая запись в память;
    • возможность проведения анализа серверного и клиентского ПО, работающего по протоколам с состояниями и без состояний;
    • широкие возможности для фаззинга ПО встраиваемых устройств с использованием частичной эмуляции и символьного исполнения;
    • фаззинг браузеров: управление браузером — через Selenium, обратная связь по покрытию — через Frida.
  • Фаззинг на больших мощностях:
    • поддержка многопоточного анализа как на одной машине, так и на распределённых;
    • возможность распределения корпуса входных данных между процессами фаззеров для повышения эффективности их работы;
    • поддержка дифференциального фаззинга.
  • Поддержка большого набора типов инструментации:
    • статическая (в основном, для C/C++): с помощью GCC/LLVM;
    • статическая инструментация байт-кода Python;
    • динамическая (в основном, для ELF, PE): DynamoRIO, Qemu (user-mode), TinyInst;
    • на основе частичной эмуляции;
    • с использованием Nyx-снапшотов и снапшот-API;
    • Java-приложений;
    • C#-приложений;
    • удалённая инструментация (позволяет выполнять фаззинг приложения, работающего на удалённом устройстве).
  • Возможность интеграции с рядом необходимых инструментов жизненного цикла разработки безопасного ПО, созданных в ИСП РАН:
    • использование инструмента динамического символьного выполнения Sydr для повышения эффективности фаззинг-тестирования;
    • возможность получать входные данные, на которых проявляются ошибки, размеченные инструментом статического анализа BinSide в автоматизированном режиме;
    • отображение трассы последовательности функций, приводящих к аварийному завершению, в интерфейсе статического анализатора Svace;
    • использование генератора данных по формальным грамматикам ANTLR для формирования корпуса входных данных.
  • Интеграция с другими инструментами динамического анализа:
    • со сторонними фаззерами: позволяет запускать в рамках одной фаззинг-сессии набор различных фаззеров, между которыми обеспечена синхронизация, что увеличивает эффективность тестирования;
    • с инструментами динамического символьного выполнения SymCC и Angr: позволяет получать новые входные данные для увеличения покрытия кода целевого ПО;
    • совместная работа с дизассемблером IDA PRO (сохранение покрытия для плагина Lighthouse, которое отображает покрытые базовые блоки в ПО, а также вывод процента покрытых базовых блоков);
    • использование фаззера Radamsa для генерации новых данных.
  • Дополнительный анализ полученных входных данных:
    • оценка критичности найденных аварийных завершений;
    • возможность запуска систем динамического анализа на новых входных данных: Valgrind, DrMemory, QASan;
    • создание профиля покрытия по исходному коду.
  • Широкие возможности по встраиванию пользовательских расширений:
    • возможность добавления пользовательских обработчиков, которые будут автоматически запускаться на новых входных данных;
    • возможность добавления пользовательских мутационных преобразований (для генерации новых входных данных и увеличения эффективности тестирования);
    • наличие модулей пред- и постобработки входных данных для осуществления константных преобразований над данными перед их отправкой в анализируемое ПО;
    • поддержка пользовательских плагинов отправки данных по сети (плагины позволяют осуществлять взаимодействие с клиентским или серверным ПО и отправлять мутированные данные);
    • поддержка пользовательских скриптов на языке Python для модификации опций (позволяет избежать конфликтов при одновременном запуске множества процессов фаззинга);
    • поддержка пользовательских плагинов на языке Python для управления окружением запуска целевого ПО (позволяет сохранять идентичное окружение на каждом запуске);
    • поддержка пользовательских плагинов инструментации (позволяет задавать произвольные правила классификации входных данных на основе поведения целевого ПО: определение нормального и аварийного завершения, зависания);
    • возможность описывать сценарии для фаззинга ПО с пользовательским интерфейсом.
  • Лёгкая расширяемость и добавление новых методов в рамках существующей инфраструктуры; оперативная адаптация под новые задачи.

Для кого предназначен ИСП Crusher?

  • Компании, нацеленные на разработку ПО с высоким уровнем надёжности и безопасности.
  • Компании, отвечающие за аудит или сертификацию ПО.

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

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

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

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

Схема работы ИСП Crusher

Схема работы ИСП Crusher

Публикации

  1. Презентация ISP Fuzzer
  2. Мишечкин М.В., Акользин В.В., Курмангалеев Ш.Ф. Архитектура и функциональные возможности инструмента ИСП Фаззер. Открытая конференция ИСП РАН им. В.П. Иванникова, 2020.
  3. Акользин В.В., Мишечкин М.В., Курмангалеев Ш.Ф. Разработка эффективного метода фаззинга приложений, работающих со сложными форматами данных. Открытая конференция ИСП РАН им. В.П. Иванникова, 2020.
  4. 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. Скачать презентацию

Документация

Рекомендации и примеры использования «Инструмента динамического анализа «Crusher»

Багтрекер (по вопросам создания учетной записи напишите по адресу crusher_users@ispras.ru)

По вопросам использования обращайтесь по адресу: crusher@ispras.ru или в Telegram-чаты https://t.me/sdl_dynamic или https://t.me/sydr_fuzz.

По вопросам определения стоимости и приобретения обращайтесь через форму на сайте или по адресу: crusher@ispras.ru.

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

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

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