Автоматизированный поиск уязвимостей в бинарном коде

Методы и средства защиты информации

Результаты синтеза IP-ядра маршрутизатора SpaceWire

Количество портов маршрутизатора Полученная логическая емкость Полученный объем кристальной памяти

4 3628 ЛЭ < 3 % ресурсов 8 896 бит < 1 % ресурсов памяти

8 6600 ЛЭ < 6 % ресурсов 16 576 бит < 1 % ресурсов памяти

16 14027 ЛЭ < 12 % ресурсов 31 936 бит < 1 % ресурсов памяти

32 36233 ЛЭ < 32 % ресурсов 62 656 бит < 1 % ресурсов памяти

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

Для конфигурирования используется внутренний нулевой порт, который поддерживает протокол КМЛР в соответствии со стандартом ECSS-E-ST-50-52С. КМЛР позволяет читать и записывать данные непосредственно в регистры маршрутизатора.

Опционально хранение конфигурации и таблиц маршрутизации возможно во внешней ЕЕРЯОМ па-

мяти. Это позволяет маршрутизатору перейти в рабочее состояние сразу после включения питания.

Также маршрутизатор позволяет собирать статусную информацию о количестве ошибок, связанных с ошибками маршрутизации пакета, превышением времени ожидания порта, разрывами SpW соединения. Кроме того, каждый порт имеет свой статусный регистр, в котором отражается более детальная информация о его состоянии.

Для оценки ресурсов ПЛИС, требуемых для размещения спроектированного IP-ядра, маршрутизатор был синтезирован в нескольких конфигурациях. В качестве ПЛИС была выбрана Altera EP4CE115F29C7. Результаты синтеза приведены в таблице.

A. V. Shahmatov

Siberian State Aerospace University named after academician M. F. Reshetnev, Russia, Krasnoyarsk

DESIGNING A CONFIGURABLE IP-CORE ROUTER SPACEWIRE

This paper describes the structure and peculiarities of the SpaceWire network Router IP core implementation and presents data on the usage of FPGA Altera EP4CE115F29C7 resources after synthesis of 4-, 8-, 16- and 32-port router.

© Шахматов А. В., 2012

УДК 004.056

М. О. Шудрак, Т. С. Хеирхабаров

Сибирский государственный аэрокосмический университет имени академика М. Ф. Решетнева, Россия, Красноярск

АВТОМАТИЗИРОВАННЫЙ ПОИСК УЯЗВИМОСТЕЙ В БИНАРНОМ КОДЕ

Рассматривается проблема поиска уязвимостей в бинарном коде программного обеспечения. Проводится анализ существующих методов и подходов к поиску и автоматическому обнаружению уязвимостей в бинарном коде, подробно рассматривается методика поиска при помощи фаззинга.

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

Для обнаружения уязвимостей используется несколько методик, рассмотрим каждую из них.

1. Ручной поиск. В рамках данной методики исследователь опирается на свой опыт, анализируя клю-

чевые места в бинарном коде, уязвимости в которых присутствуют чаще всего [1].

2. Поиск уязвимостей по шаблону - автоматизированный метод, основанный на сравнении некоторых характеристик исследуемого ПО с заранее подготовленными описаниями (сигнатурами) уязвимых мест [2].

3. Методология обнаружения ошибок в программном обеспечении путем передачи непредвиденных данных и мониторинга исключительных ситуаций их обработки, чаще употребляется термин «фаззинг».

Необходимо отметить, что метод ручного поиска на сегодняшний день является низкоэффективным

Решетневскце чтения

ввиду достаточно большого объема работы и сложности исследования. Второй способ подходит лишь для обнаружения несложных уязвимостей, на сегодняшний день редко встречающихся в программных продуктах. В свою очередь, фаззинг, является относительно эффективным и быстроразвивающимся методом поиска уязвимостей. Классифицируются современные технологии фаззинга по следующим критериям:

1) по методу манипуляции данными:

а) генерация. Новые данные получаются за счет незначительных изменений существующих;

б) мутация. Данные подготавливаются «с нуля» на основе протоколов или в соответствии с заданными правилами;

2) по способу доставки данных:

а) используя существующие протоколы/интерфейсы передачи данных;

б) используя In-Memory Fuzzing. Технология, в которой за основу берется модульное тестирование (используется для тестирования исходного кода) отдельных блоков и функций в бинарном коде исследуемого программного обеспечения. Такая технология, позволяет значительно оптимизировать процесс покрытия кода тестами, тем самым снизив ресурсы, требуемые для реализации фаззинга.

Сформулируем основные требования, которым должно удовлетворять эффективное средство анализа бинарного кода:

1) обеспечивает полное покрытие кода исследуемого приложения;

2) требует для своей работы ограниченное количество (адекватное цели анализа) ресурсов;

3) регистрирует любые аномалии в процессе исполнения исследуемого приложения;

4) обеспечивает линейную масштабируемость.

Отдельно необходимо упомянуть об анализе степени покрытия кода, которое позволяет выявить степень эффективности фаззинга, в рамках которого не-

обходимо решить следующие задачи динамического анализа кода:

- обеспечить анализ покрытия кода (code coverage). Необходимо для построения карты покрытия кода c целью проанализировать, какие инструкции и сколько раз исполнялись в процессе анализа;

- обеспечить реализацию тентрирования инструкций (Taint analysis). Необходимо для сопоставления данных с конкретными участками кода, которые были исполнены при их обработке;

- обеспечить контроль над исполнением кода для генерации входных данных, удовлетворяющих конкретным условиям (Symbolic execution).

Таким образом, поиск уязвимостей в бинарном коде можно разделить на следующие этапы:

- анализ исследуемого приложения;

- генерация данных;

- трассировка;

- анализ результатов.

В ходе данной статьи была рассмотрена проблема поиска уязвимостей в бинарном коде программного обеспечения, проведен анализ существующих методик и подходов к поиску таких уязвимостей. В результате чего можно заключить, что на сегодняшний день наиболее эффективной методикой является поиск при помощи In- Мemory Fuzzing с использованием технологии мутации входных данных и применением генетических алгоритмов.

Библиографические ссылки

1. Хоглана Г., Мак-Гроу Г. Взлом программного обеспечения. М. : Вильямс, 2005. C. 132-134.

2. Благодаренко А. В. Разработка метода, алгоритмов и программ для автоматического поиска уязвимо-стей программного обеспечения в условиях отсутствия исходного кода : автореф. дис. ... канд. техн. наук : 05.13.19 / А. В. Благодаренко. Таганрог : Изд-во Южного федер. ун-та, 2011.

M. O. Shudrak, T. S. Kheirkhabarov Siberian State Aerospace University named after academician M. F. Reshetnev, Russia, Krasnoyarsk

AUTOMATICAL VULNERABILITY DETECTION IN BINARY CODE

The problem of vulnerability detection in the binary code is presented. The analysis of existing methods and approaches to search and automatic vulnerabilities detection in binary code is conducted, searching vulnerability method with fuzzing is considered in details.

© mygpaK M. O., Xenpxa6apoB T. C., 2012