Научная статья на тему 'Применение программных технологий анализа поиска уязвимостей в интересах обеспечения защищенности разрабатываемого программного обеспечения'

Применение программных технологий анализа поиска уязвимостей в интересах обеспечения защищенности разрабатываемого программного обеспечения Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
249
61
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ТРЕХСТОРОННИЙ КЛЮЧ / КАНАЛ С ОШИБКАМИ / КАНАЛ СВЯЗИ / ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ / ПРОТОКОЛ ФОРМИРОВАНИЯ КЛЮЧА

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Никитин О.И., Воропаев А.В., Чукляев Е.И.

Представлены основные подходы по автоматическому анализу погромного обеспечения (ПО). Приведена краткая характеристика технологий обратной инженерии ПО, в частности более детально рассмотрены технологии динамического анализа. Перечислены и раскрыты подходы по затруднению ручного и автоматического анализа ПО. Перечислены наиболее распространенные уязвимости ПО которые способны обнаружить технологии обратной инженерии.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Никитин О.И., Воропаев А.В., Чукляев Е.И.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Применение программных технологий анализа поиска уязвимостей в интересах обеспечения защищенности разрабатываемого программного обеспечения»

ПРИМЕНЕНИЕ ПРОГРАММНЫХ ТЕХНОЛОГИЙ АНАЛИЗА ПОИСКА УЯЗВИМОСТЕЙ В ИНТЕРЕСАХ ОБЕСПЕЧЕНИЯ ЗАЩИЩЕННОСТИ РАЗРАБАТЫВАЕМОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Никитин О.И.,

Военная академия войсковой ПВО

ВС РФ имени Маршала Советского

Союза А.М. Василевского,

orlex@yandex.ru

Воропаев А.В.,

Военная академия войсковой ПВО

ВС РФ имени Маршала Советского

Союза А.М. Василевского,

vlex@yandex.ru

Чукляев Е.И.

Военная академия войсковой ПВО ВС РФ имени Маршала Советского Союза А.М. Василевского, nil_va@pochata.ru

Ключевые слова:

трехсторонний ключ, канал с ошибками, канал связи, информационная безопасность, протокол формирования ключа.

АННОТАЦИЯ

Представлены основные подходы по автоматическому анализу погромного обеспечения (ПО). Приведена краткая характеристика технологий обратной инженерии ПО, в частности более детально рассмотрены технологии динамического анализа. Перечислены и раскрыты подходы по затруднению ручного и автоматического анализа ПО. Перечислены наиболее распространенные уязвимости ПО которые способны обнаружить технологии обратной инженерии.

US

RESEARCH

Высокая сложность современного ПО, обусловленная большим объемом (до нескольких миллионов строк) исходного кода, интегрирование методов обфускации (запутывания), деградация производительности процессов, наличие уязвимостей (дефектов, критических ошибок) является фундаментальной проблемой, вызванной текущим состоянием развития информационных технологий [1].

Уязвимости ПО - критические ошибки, не выявленные в ходе тестирования и не декларированные спецификацией разработчика или заложенные преднамеренно, предоставляют злоумышленникам исключительные возможности по разглашению информации, ее модификации, блокированию использования и безостаточному уничтожению без возможности восстановления [2].

Возможность дестабилизации процессов функционирования и изменения основных свойств защищенности (доступность, целостность, конфиденциальность) информационных ресурсов информационно-вычислительных систем посредством применения злоумышленниками несанкционированных воздействий деструктивного характера (атак) на уязвимости ПО предопределяют острую потребность в своевременном обнаружении уязвимостей (дефектов, критических ошибок) на этапах разработки и проектирования, проверки соответствия заявленной политики безопасности и реализации механизмов защиты [1].

Технологии обратной инженерии ПО

Наиболее эффективными средствами обнаружения уязвимостей ПО являются инструментальные средства обратной инженерии, основанные на методах статического и динамического (комбинированного) анализа исходного и бинарного кода.

Поиск и устранение уязвимостей в ПО требует больших трудозатрат, при этом многие из них могут остаться незамеченными. По данным исследования, проведенного по заказу Национального института стандартов и технологий США, убытки, возникающие из-за недостаточно развитой инфраструктуры устранения уязвимостей и критических ошибок в ПО, составляют от 22 до 60 миллиардов долларов в год [3]. Часто дефекты являются причиной переноса сроков выпуска программ. Стоимость устранения дефекта, пропущенного на этапах разработки и тестирования, может возрасти после поставки программы от 2 до 100 раз [4].

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

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

Выполнить задачи обратной инженерии ПО автоматически зачастую оказывается невозможно. В этих случаях используются программные инструментальные средства, которые помогают аналитику получить описание исследуемого бинарного кода на языке высокого уровня. Для этого системному аналитику необходимо решить такие задачи разбиения исследуемого бинарного кода на процедуры, получения графа потока управления каждой процедуры, восстановления типов используемых переменных, восстановления арифметических и логических выражений, определения используемых в параметров процедур и др. Получив (вручную или с помощью программных инструментов) решения перечисленных задач, системный аналитик может построить высокоуровневое описание исследуемого бинарного кода, пригодное для изучения прикладным аналитиком [1].

Технологии динамического анализа

бинарного кода ПО.

Для анализа уязвимостей в защищенном (в частности, запутанном) бинарном коде ПО, что существенно усложняет задачу дизассемблирования и декомпиляции, применяются методы динамического анализа. Для такого кода необходимо решить дополнительную задачу - преодоление защиты. Рассмотрим некоторые виды защиты кода, противодействующие применению методов статического и динамического анализа [1].

Упаковка и шифрование кода. Код программы хранится в сжатом (зашифрованном) виде, вспомогательная программа протектор распаковывает код и помещает его в оперативную память, после чего передает на него управление. Более того, в оперативной памяти может быть размещен не весь код программы, а только его фрагмент. В тот момент, когда для работы программы потребуются команды, не входящие в развернутый фрагмент, протектор извлекает следующий фрагмент и помещает его поверх предыдущего. Данный подход делает неприменимым непосредственное дизассемблирование кода, хранящегося на диске. Помимо того, сохранение дампов памяти для последующего дизассемблирования становится крайне неэффективным, т.к. каждый дамп содержит только малый фрагмент программы, наложенный на одни и те же адреса памяти.

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

us

RESEARCH

Запутывание кода. Известны четыре основные группы запутывающих преобразований - запутывание форматирования исходного текста (layout obfuscation), запутывание данных (data obfuscation), запутывание управления (control obfuscation) и превентивные трансформации (preventive transformation). Последние три, с успехом применяются при запутывании бинарного кода программы. Помимо того, внесение «мусорного» кода затрудняет анализ из-за возрастающего в разы объема просматриваемых команд. В отдельную категорию следует выделить запутывание на основе виртуальных машин.

В настоящее время известны несколько таких программных систем, активно используемых на практике: VMProtect, CodeVirtualizer (Themida), Private exe Protector, The Enigma Protector, Safengine и др. Все перечисленные способы запутывания направлены на то, что восстановление из бинарного кода представление обладает излишней логикой, не связанной с логикой работы исходного алгоритма. Выделение изучаемого алгоритма требует дополнительных временных затрат, размер которых не позволяет решать задачи обратной инженерии в обозримые сроки.

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

Технологии запутывания программ в настоящее время активно внедряется в практику разработки программ. Так, в состав среды разработки Microsoft .NET, включен программный продукт Dotfuscator [5], который представляет собой запутывающий (обфускирующий) компилятор языка C#. Развитие обфускирующих компиляторов приве-дит к тому, что практически все программы могут иметь защищенный код. Результатом этого будет принципиальная неприменимость средств статического анализа кода, основанных на дизассемблировании полученных тем или иным способом машинных инструкций. Системный аналитик в этом случае будет сталкиваться с ситуацией, когда даже наличие машинного кода не позволяет восставить пригодное для прикладного анализа описание алгоритма, поскольку выполнившееся защитное преобразование кода является односторонним в том смысле, что обратное преобразование либо не существует, либо является очень сложным.

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

Проект BitBlaze [6], в рамках которого происходит раз-

работка новых методов и программных средств поддержки анализа бинарного кода, направлен на создание средств автоматизации решения следующих задач: выявление, диагностика и исправление уязвимостей в бинарном коде ПО; глубокий анализ вредоносного кода и последующая разработка средств защиты; автоматическое создание моделей алгоритмов по бинарному коду и последующий анализ этих моделей. В состав BitBlaze входит три компонента, рассчитанных на согласованное применение в рамках гибридной методики анализа бинарного кода: статический анализатор Vine, динамический анализатор TEMU, интерпретатор Rudder, комбинирующий символьное и непосредственное исполнение машинного кода. Первые две компоненты являются программами с открытым исходным кодом и доступны для распространения. Анализатор Vine работает со статическим кодом. Он производит бинарную трансляцию кода x86 во внутреннее низкоуровневое представление VIL, являющееся, по сути, кодом RISC-машины. Над этим внутренним представлением производятся классические компиляторные оптимизации, такие как: продвижение констант, глобальная нумерация значений, удаление мертвого кода. Практический анализ заключается в автоматическом выделении алгоритмов по заданным аналитиком критериям, т.е. проведении статического слайсинга программы, на основе потоков управления и данных. Имеется возможность получить контрольный пример: VIL транслируется в язык Си, после чего компилируется. В случае слайсинга контрольный пример позволяет экспериментально подтвердить корректность заданного аналитиком критерия, путем выполнения выделенного алгоритма на тестовых данных.

Анализатор TEMU представляет собой инфраструктуру для проведения анализа помеченных данных в рамках всей вычислительной системы. Анализатор разработан на основе симулятора QEMU, в виртуальной машине работает модифицированная ОС Linux, которая передает средствам анализа информацию о таких событиях, как создание/завершение процессов и переключение между ними, обращения к файловой системе и периферийным устройствам. Пользователь может помечать данные (ввод через клавиатуру, входящие сетевые пакеты, страницы оперативной памяти), после чего механизм анализа TEMU отслеживает их распространение и позволяет выделять код, который работает с этими данными. Пользователь TEMU имеет возможность разрабатывать модули-расширения, использующие механизм анализа помеченных данных для решения своих практических задач. Как Vine, так и TEMU используются для поиска анализа и восстановления структуры вредоносного кода.

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

US

RESEARCH

Компанией ОгаттаТесЬ предлагается спектр программных продуктов для решения задач информационной безопасности. Во всех этих продуктах используются классические компиляторные технологии для автоматизации процессов поиска ошибок в программах, восстановления структуры программ с целью понимания реализованных в них алгоритмов. Исследовательские работы, проводимые в Университете Висконссин-Мэдиссон, были доведены до уровня промышленных продуктов. Первые результаты были получены в области автоматизированного поиска ошибок в текстах программ на языках Си/Си+ + , а затем эти методы были перенесены на исполняемый код архитектуры х86.

Программные системы Соёе8иг£ег/х86 и СоёеБопаг/ х86, позволяют восстанавливать структуру программы по ее исполняемому коду и выявлять уязвимости (дефекты, критические ошибки). В рамках СоёеБиг£ег/х86 восстанавливается структура программы в виде графа зависимостей системы (ББО, представляющего собой агрегацию графа вызовов функции и графов зависимостей этих функций. Построенный ББО используется для навигации по коду аналитиком, визуализации существующих зависимостей между машинными командами. При построении ББО решается одна из проблем обратной инженерии бинарного кода - восстанавливаются переходы и обращения в память, использующие косвенную адресацию посредством анализа присвоения значений (УБЛ), статического анализа, позволяющего при некоторых ограничениях различать на уровне машинного кода целочисленные переменные и указатели, а также составлять множество потенциальных значений для этих переменных. Система СоёеБопаг/х86 заявлена как программное средство для поиска ошибок в бинарном коде архитектуры х86, основанная на тех подходах, что и СоёеБиг£ег/х86[7]. Однако, какие-либо открытые публикации по этой системе неизвестны.

Разнообразие технологий, используемые в рассматриваемых инструментах анализа ПО, существенно затрудняет их сравнение. Инструменты анализа ПО, принадлежащие к разным категориям, могут быть несравнимы, даже когда выдаваемые ими предупреждения указывают на уязвимости (дефекты, критические ошибки) одного и того же типа, в связи с несовместимостью областей их применения (используемые платформы, язык программирования и т.д.). Лишь небольшое количество систем относятся к одной и той же категории. Типы уязвимостей (дефектов, критических ошибок), обнаруживаемые различными инструментами, часто отличаются в деталях, что, например, приводит к ситуациям, в которых ошибка переполнения буфера, выявленная одним инструментом, существенно отличаются от соответствующих ситуаций, обнаруженная другими.

Наиболее распространенные уязвимости

(дефекты, критические ошибки) ПО.

Проведенный анализ уязвимостей (дефектов, критических ошибок) в ПО некоторыми из программных систем позволил сформировать наиболее часто возникающие их типы, к которым относятся: переполнение буфера; ошиб-

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

Литература

1. Аветисян А. И. Современные методы статического и динамического анализа программ для решения приоритетных проблем программной инженерии : автореф. дис. доктора физ.-мат. наук: 05.13.11/Аветисян Арутюн Ишха-нович. - М., 2011. - 36 с.

2. Чукляев И. И., Морозов А. В., Болотин И. Б. Теоретические основы построения адаптивных систем комплексной защиты информационных ресурсов распределенных информационно-вычислительных систем: монография / И. И. Чукляев, А. В. Морозов, И. Б. Болотин - Смоленск: ВА ВПВО ВС РФ, 2011. - 227 с.

3. Gallaher M. P. and Kropp B. M. Economic impacts of inadequate infrastructure for software testing. Technical report, RTI International, National Institute of Standards and Technology, US Dept of Commerce, May 2002.

4. Forrest Shull, Vic Basili, Barry Boehm, Winsor A. Brown, Patricia Costa, Mikael Lindvall, Dan Port, Ioana Rus, Roseanne Tesoriero, and Marvin Zelkowitz. What we have learned about fighting defects. In International Software Metrics Symposium. Ottawa, Canada, 2002.

5. Dotfuscator Community Edition 4.0 [Электронный ресурс]. - Режим доступа: http://msdn.microsoft.com/ru-ru/library/ ms227240%28v=vs.90%29.aspx.

6. Dawn Song, David Brumley, Heng Yin, Juan Caballero, Ivan Jager, Min Gyung Kang, Zhenkai Liang, James Newsome, Pongsin Poosankam and Prateek Saxena. BitBlaze: A New Approach to Computer Security via Binary Analysis. // Proceedings of the 4th International Conference on Information Systems Security. Keynote invited paper. 2008. LNCS 5352, pp. 1-25.

7. Буренин А.Н. , Легков К.Е. Эффективные методы управления потоками в защищенных инфокоммуникационных сетях // H&ES: Наукоемкие технологии в космических исследованиях Земли. - 2010. -№ 2. - С. 29-34.

8. Буренин А.Н. , Легков К.Е. К вопросу моделирования организации информационной управляющей сети для системы управления современными инфокоммуникационными сетями / А.Н. Буренин, К.Е. Легков // H&ES: Наукоемкие технологии в космических исследованиях Земли. - 2011. -№ 1. - С. 22-25.

9. Буренин А.Н., Легков К.Е. Модели процессов мониторинга при обеспечении оперативного контроля эксплуатации инфокоммуникационных сетей специального назначения // H&ES: Наукоемкие технологии в космических исследованиях Земли. - 2011. -№ 2. - С. 19-23.

10. Буренин А.Н., Легков К.Е. К вопросу управления эффективностью инфокоммуникационных систем специального назначения // H&ES: Наукоемкие технологии в космических исследованиях Земли. - 2014. -№ 1. - С. 38-43.

us

RESEARCH

APPLICATION SOFTWARE TECHNOLOGY ANALYSIS VULNERABILITY SCAN IN ORDER TO FURTHER DEVELOP THE SOFTWARE IMMUNITY

Nikitin O., Air Defense Military Academy,(Smolensk), orlex@yandex.ru

Voropaev A., Air Defense Military Academy,(Smolensk), vlex@yandex.ru

Chuklyaev E., Air Defense Military Academy,(Smolensk), nil_va@pochata.ru

Abstract

The main approaches for the automatic analysis of the pogrom (software). Presents brief characteristics of reverse engineering software technology, in particular discussed in more detail dynamic analysis technology. Listed and disclosed approaches difficulty of manual and automated analysis software. The most common software vulnerabilities that can detect reverse engineering technology.

Keywords: technology, static and dynamic analysis, requirement, the source and binary code, the vulnerability of software.

References

l.Avetisyan A.I. Modern methods of static and dynamic analysis of programs to address priority issues of software engineering:

Author. dis____Dr. Sci. Sciences: 05.13.11 / Avetisyan Haroutiun

Ishhanovich. - M., 2011 - 36 p.

2 Chuklyaev I.I., Morozov A.V., Bolotin I.B. Theoretical bases for the construction of complex adaptive systems, protection of information resources of distributed information systems: monograph / Chuklyaev I.I., Morozov A.V., Bolotin I.B. - Smolensk, Air Defense Military Academy, 2011 - 227 p. 3. Gallaher M. P. and Kropp B. M. Economic impacts of inadequate infrastructure for software testing. Technical report, RTI

International, National Institute of Standards and Technology, US Dept of Commerce, May 2002.

4. Forrest Shull, Vic Basili, Barry Boehm, Winsor A. Brown, Patricia Costa, Mikael Lindvall, Dan Port, loana Rus, Roseanne Tesoriero, and Marvin Zelkowitz. What we have learned about fighting defects. In International Software Metrics Symposium. Ottawa, Canada, 2002.

5. Dotfuscator Community Edition 4.0 [Электронный ресурс]. -Режим доступа: http://msdn.microsoft.com/ru-ru/library/ ms227240%28v=vs.90%29.aspx.

6. Dawn Song, David Brumley, Heng Yin, Juan Caballero, Ivan Jager, Min Gyung Kang, Zhenkai Liang, James Newsome, Pongsin Poosankam and Prateek Saxena. BitBlaze: A New Approach to Computer Security via Binary Analysis. // Proceedings of the 4th International Conference on Information Systems Security. Keynote invited paper. 2008. LNCS 5352, pp. 1-25.

7. Legkov, K., Burenin, A. Effective methods of control over streams in protected infokommunikatsionny networks //H&ES: High technologies in space researches of Earth. - 2010.-№ 2. -pp. 29-34.

8. Legkov, K. & Burenin, A. To a question of modeling of the organization of the information managing director of a network for a control system of modern infokommunikatsionny networks //H&ES: High technologies in space researches of Earth. -2011.-№ 1. - pp. 22-25.

9. Legkov, K. & Burenin, A. Model of monitoring processes when ensuring operative control of operation of infokommunikatsionny networks of special purpose //H&ES: High technologies in space researches of Earth. - 2011.-№ 2. - pp. 19-23.

10. Legkov, K. & Burenin, A. To a question of management of efficiency of infokommunikatsionny systems of special pur-pose/K.E. Legkov, A.N.Burenin//H&ES: High technologies in space researches of Earth. - 2014.-№ 1. - pp. 38-43.

i Надоели баннеры? Вы всегда можете отключить рекламу.