Видеоролик о технологиях ИСП РАН
ИСП Crusher: комплекс динамического и статического анализа программ
Документация и поддержка | В реестре российского ПО | Оформить лицензию
ИСП Crusher – программный комплекс, комбинирующий несколько методов динамического и статического анализа, в частности, фаззинг (ИСП Fuzzer) и символьное выполнение (в качестве одного из движков может выступать Sydr). В ближайшее время в комплекс планируется включить ещё одну технологию ИСП РАН: BinSide. ИСП Crusher позволяет построить процесс разработки в соответствии с ГОСТ Р 56939-2016 и «Методикой выявления уязвимостей и недекларированных возможностей в программном обеспечении» ФСТЭК России.
Особенности и преимущества
В основе комплекса ИСП Crusher находится ИСП Fuzzer – инструмент проведения фаззинг-тестирования, необходимый на всех этапах разработки, тестирования и эксплуатации ПО. Обнаруживает ошибки как при наличии, так и при отсутствии исходного кода. Решает те же задачи, что и мировые аналоги (Synopsys Codenomicon, beSTORM, Peach Fuzzer), однако более удобен для российских компаний в условиях процесса импортозамещения.
ИСП Fuzzer — это:
- Фаззинг широкого класса ПО:
- пользовательские приложения, ядро и библиотеки;
- ПО встроенных устройств (контроллеры, устройства интернета вещей), а также сервисы и COM-объекты ОС Windows;
- ОС семейства Linux и Windows;
- приложения на различных языках программирования: C/C++, Java, Python, C#;
- архитектуры x86/x86_64, ARM, MIPS, RISC-V;
- фаззинг нейронных сетей. Выявляет случаи ошибочных предсказаний нейронной сети при искажении корректно классифицируемых входных данных, опираясь на анализ карты активации нейронов во время работы нейросетей. Это позволяет повысить качество и безопасность систем ИИ; благодаря такому функционалу можно:
- находить ошибки в работе сетей для ситуаций, которые изначально не попали в набор данных для обучения;
- находить возможные закладки и НДВ.
- фаззинг-тестирование через различные источники входных данных: файл, аргументы командной строки, стандартный поток ввода, аргументы переменных окружений, сеть, прямая запись в память;
- возможность проведения анализа серверного и клиентского ПО, работающего по протоколам с состояниями и без состояний;
- фаззинг протоколов с использованием модифицированного клиента: отпадает необходимость написания клиента или его спецификации с нуля для фаззинга сервера (поддерживается и зеркальная схема − с модифицированным сервером);
- широкие возможности для фаззинга ПО встраиваемых устройств с использованием частичной эмуляции и символьного исполнения;
- фаззинг браузеров: управление браузером — через Selenium, обратная связь по покрытию — через Frida;
- фаззинг ПО, требующего изоляции, в докер-режиме − каждый экземпляр фаззера работает в от-дельном докер-контейнере;
- фаззинг приложений в rootfs в chroot-режиме.
- Фаззинг на больших мощностях:
- поддержка многопоточного анализа как на одной машине, так и на распределённых;
- возможность распределения корпуса входных данных между процессами фаззеров для повышения эффективности их работы;
- поддержка дифференциального фаззинга;
- поддержка коллаборативного фаззинга с автоматической балансировкой вычислительных мощ-ностей между различными фаззерами.
- Поддержка большого набора типов инструментации:
- статическая (в основном, для C/C++): с помощью GCC/LLVM;
- статическая инструментация байт-кода Python;
- динамическая (в основном, для ELF, PE): DynamoRIO, Qemu (user-mode), TinyInst;
- на основе частичной эмуляции;
- на основе полносистемной эмуляции;
- с использованием Nyx-снапшотов и снапшот-API;
- Java-приложений;
- C#-приложений;
- удалённая инструментация (позволяет выполнять фаззинг приложения, работающего на удалённом устройстве).
- Возможность интеграции с рядом необходимых инструментов жизненного цикла разработки безопасного ПО, созданных в ИСП РАН:
- использование инструмента динамического символьного выполнения Sydr для повышения эффективности фаззинг-тестирования;
- возможность получать входные данные, на которых проявляются ошибки, размеченные инструментом статического анализа BinSide в автоматизированном режиме;
- возможность получать информацию о нестабильных участках кода и о граничных блоках за счёт интеграции с BinSide;
- отображение трассы последовательности функций, приводящих к аварийному завершению, в интерфейсе статического анализатора Svace;
- использование генератора данных по формальным грамматикам ANTLR для формирования корпуса входных данных.
- Интеграция с другими инструментами динамического анализа:
- со сторонними фаззерами: позволяет запускать в рамках одной фаззинг-сессии набор различных фаззеров, между которыми обеспечена синхронизация, что увеличивает эффективность тестирования;
- с инструментами динамического символьного выполнения SymCC и Angr: позволяет получать новые входные данные для увеличения покрытия кода целевого ПО;
- совместная работа с дизассемблером IDA PRO (сохранение покрытия для плагина Lighthouse, которое отображает покрытые базовые блоки в ПО, а также вывод процента покрытых базовых блоков);
- использование фаззера Radamsa для генерации новых данных.
- Дополнительный анализ полученных входных данных:
- оценка критичности найденных аварийных завершений;
- возможность запуска систем динамического анализа на новых входных данных: Valgrind, DrMemory, QASan;
- создание профиля покрытия по исходному и бинарному коду.
- Широкие возможности по встраиванию пользовательских расширений:
- возможность добавления пользовательских обработчиков, которые будут автоматически запускаться на новых входных данных;
- возможность добавления пользовательских мутационных преобразований (для генерации новых входных данных и увеличения эффективности тестирования);
- наличие модулей пред- и постобработки входных данных для осуществления константных преобразований над данными перед их отправкой в анализируемое ПО;
- поддержка пользовательских плагинов отправки данных по сети (плагины позволяют осуществлять взаимодействие с клиентским или серверным ПО и отправлять мутированные данные);
- поддержка пользовательских скриптов на языке Python для модификации опций (позволяет избежать конфликтов при одновременном запуске множества процессов фаззинга);
- поддержка пользовательских плагинов на языке Python для управления окружением запуска целевого ПО (позволяет сохранять идентичное окружение на каждом запуске);
- поддержка пользовательских плагинов инструментации (позволяет задавать произвольные правила классификации входных данных на основе поведения целевого ПО: определение нормального и аварийного завершения, зависания);
- возможность описывать сценарии для фаззинга ПО с пользовательским интерфейсом.
- Лёгкая расширяемость и добавление новых методов в рамках существующей инфраструктуры; оперативная адаптация под новые задачи.
Для кого предназначен ИСП Crusher?
- Компании, нацеленные на разработку ПО с высоким уровнем надёжности и безопасности.
- Компании, отвечающие за аудит или сертификацию ПО.
Системные требования
Поддержка фаззинга на Linux и Windows. Поддержка фаззинга ПО для архитектур x86_64, ARM, MIPS. Возможность проводить фаззинг-тестирование встроенных устройств (контроллеры, устройства интернета вещей), а также сервисов и COM-объектов ОС Windows.
Требования к среде выполнения ПК Crusher:
- операционная система: Ubuntu версии 18.04 и выше, CentOS версии 6.9 и выше, Astra Linux версии 1.5 и выше;
- ядро версии 2.6.32 или выше;
- библиотека glibc версии 2.12 или выше.
Требования к составу технических средств:
Минимальные требования:
- процессор (CPU): Intel Core i7 или аналогичный AMD;
- оперативная память (RAM): 8 Гб.
Рекомендуемые требования:
- процессор (CPU): 32-х ядерный и более Intel / AMD (в зависимости от требований к многопоточности фаззинг-тестировния);
- оперативная память (RAM): 32 Гб и более (в зависимости от потребления RAM целевой программой).
Опыт внедрения
ИСП Crusher в разной комплектации используется более чем в 70 компаниях и лабораториях, в том числе в ОАО «РусБИТех», Postgres Professional, ООО «Код Безопасности», МВП «СВЕМЕЛ» и др.
Схема работы ИСП Crusher

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