Институт системного программирования им. В.П. Иванникова РАН


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

BinSide: статический анализатор бинарного кода

BinSide – платформа обнаружения дефектов в программе методами статического анализа исполняемого кода. Необходима, когда нет доступа к исходному коду (например, при анализе закрытых библиотек).

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

BinSide – платформа для анализа исполняемого кода, разрабатываемая на основе фреймворка BinNavi. Переводит дизассемблерное представление в REIL, которое позволяет выполнять анализ независимо от процессорной архитектуры и целевой системы. Предоставляет разные типы анализа, такие как поиск ошибок, оптимизации динамического анализа, поддержка обратной разработки (интегрирован с дизассемблерами IDA PRO и Ghidra).

Возможности ядра BinSide:

  • Лёгкая расширяемость:
    • детекторы ошибок реализованы в виде подключаемых модулей;
    • используется представление REIL из 17 инструкций без побочных эффектов (каждая ассемблерная инструкция транслируется в набор из REIL-инструкций);
    • есть возможность вручную задавать семантику функций для улучшения качества анализа.
  • Поддержка анализа бинарных файлов и библиотек для архитектур x86-64, ARM и MIPS.
  • Поиск дефектов следующих типов: CWE-121 (Stack-based Buffer Overflow), CWE-122 (Heap-based Buffer Overflow), CWE-134 (CWE), CWE-415 (Double Free), CWE-416 (Use After Free), CWE-77 (Command Injection).
  • Ядро анализа позволяет выполнять:
    • Внутрипроцедурный анализ потока данных и управления, включающий анализ значений и указателей, анализ помеченных значений, отслеживание состояния динамической памяти, восстановление вычислимых переходов, определение влияния функции на контекст вызова. Внутрипроцедурный анализ учитывает эффекты вызываемых функций.
    • Межпроцедурный анализ и выдачу предупреждений о предполагаемых ошибках, в том числе имеющих межпроцедурный характер. Каждый дефект имеет трассу, связывающую входные данные и место проявления дефекта в коде программы. В этом месте анализатор фиксирует нарушение модели памяти программы или модели безопасности системы.
    • Поиск ошибок на всех путях, независимо от покрытия кода, полученного с помощью динамического анализа или тестирования.
  • Анализ трасс ошибок в выданных предупреждениях на исходном коде в интерфейсе Svace-сервера при наличии отладочной информации в анализируемом файле.

Компоненты BinSide:

  • Компонент восстановления влияния функций на контекст вызова.
  • Компонент поиска бинарных клонов кода, в том числе подкомпоненты на его основе:
    • подкомпонент анализа изменений между версиями программ;
    • подкомпонент переноса разметки имён функций с одного бинарного файла на другой.

Для кого предназначен BinSide?

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

Схема работы

BinSide: статический анализатор бинарного кода /></p>    					<h3>Разработчик/участник</h3>
				<p>
				<a class=Компиляторные технологии

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