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?
- Компании, которые нуждаются в тщательной проверке стороннего ПО, в том числе при отсутствии доступа к исходному коду.
- Разработчики, которым требуется повысить качество работы инструментов динамического анализа за счёт дополнительных данных, полученных с помощью статического анализа.
- Специалисты по обратной инженерии.
- Компании, отвечающие за аудит или сертификацию ПО.
Схема работы
Компиляторные технологии
Перейти к списку всех технологий