ИСП 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, ООО «Код Безопасности», МВП «СВЕМЕЛ» и др.

На нашем сайте мы используем cookie файлы, содержащие информацию о предыдущих посещениях веб-сайта. Данные обрабатываются для улучшения качества работы нашего веб-сайта. Если вы не хотите использовать cookie файлы, измените настройки браузера.