WWW.KONF.X-PDF.RU
БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА - Авторефераты, диссертации, конференции
 


Pages:     | 1 |   ...   | 2 | 3 ||

«МОДЕЛЬ, АЛГОРИТМЫ И ПРОГРАММНЫЙ КОМПЛЕКС ДЛЯ АВТОМАТИЗИРОВАННОГО ПОИСКА УЯЗВИМОСТЕЙ В ИСПОЛНЯЕМОМ КОДЕ ...»

-- [ Страница 4 ] --

Первая уязвимость была обнаружена в свободно распространяемом видеофильтре LAV, возникающая при некорректной обработке ширины видеокадра.

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

Вторая уязвимость была обнаружена в самом распространенном в мире DNS – сервере BIND9, разработкой которого занимается международная организация Internet System Consortium (ISC). Организация была уведомлена об угрозе, после чего уязвимости был присвоен идентификатор в международной базе уязвимостей NIST CVE-2013-4854 с уровнем опасности 7.8 из 10 [103]. Организация ISC официально принесла благодарность за найденную уязвимость [104].

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

4.4. Описание внедрений результатов диссертационной работы Разработанный в рамках данной работы программный комплекс был опубликован в открытом доступе как ПО с открытым исходным кодом, которое может свободно использоваться как в научных, так и в коммерческих целях [105]. Кроме того программный комплекс был внедрен в ряд организаций для решения практических задач в рамках их коммерческой, научно-исследовательской или образовательной деятельности (см. приложение 6). Также отметим, что элементы модуля декомпиляции бинарного кода были внедрены в проект по анализу бинарного кода в IBM Research Israel, а элементы подсистемы автоматизированного поиска уязвимостей в трассе программы были внедрены в систему тестирования компании Google в рамках программы поддержки проектов с открытым исходным кодом Google Summer of Code 2014 (см. приложение 7, стр. 176-177). Рассмотрим каждый из примеров внедрения более подробно.

4.4.1. Внедрение элементов подсистемы автоматизированного поиска уязвимостей в трассе программы в процесс разработки компании Google Процесс разработки в компании Google включает в себя целый комплекс мероприятий, направленных на снижение вероятности появления ошибок и уязвимостей в будущих программных продуктах. Как правило, этот процесс включает в себя: ручной аудит перед внесением изменений, автоматизированное тестирование нового функционала с различными конфигурациями тестовой среды, автоматизированный статический анализ исходного кода, а также тестирование по методу «черного ящика» на предмет новых ошибок или уязвимостей, часто без доступа к исходному коду. В качестве системы для определения ошибок и уязвимостей без доступа к исходному коду используется система DrMemory, разрабатываемая Google совместно с Массачусетским Технологическим Университетом, построенная на платформе динамической бинарной инструментации DynamoRIO. В рамках данной работы требовалось повысить эффективность детектирования этой системы за счёт увеличения количества поддерживаемых недокументированных системных вызовов ОС Windows. Для этого необходимо было обеспечить поддержку распознавания системных структур данных и параметров системных вызовов.

Было принято решение изменить архитектуру системы и не перечислять всю символьную информацию о системных структурах данных вручную, а использовать отладочную информацию, которую предоставляет компания Microsoft в Windows Symbol Package [118]. Учитывая, что Windows Symbol Package содержит 6 360 файлов с символьной информацией, было проведено специальное исследование, которое показало, что только Wintypes.pdb содержит всю необходимую информацию. Данная библиотека в дальнейшем и использовалась для получения символьной информации о структурах данных.

Пример работы и вывод разработанной системы показан на рисунке 4.6:

Рисунок 4.6.

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

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

Рисунок 4.7.

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

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

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

Для решения этой задачи было принято решение осуществить внедрение комплекса в цикл разработки ПО на этапе тестирования новой функциональности, каждую ночь в период отсутствия новых задач на серверах компании. Для выполнения анализа было описано 5 тестовых сценариев, включающих в себя анализ следующих протоколов обмена информации: XML, HTTP, FTP, SMTP и DNS.

В ходе проверок в рамках независимого анализа продуктов Internet System Consortium и LAV за два месяца тестирования с помощью разработанного программного комплекса удалось выявить 2 критические уязвимости в этих продуктах, за что была получена официальная благодарность от этих организаций.

4.4.4. Внедрение программного комплекса в ООО ГуардНет ООО ГуардНет в рамках своей коммерческой деятельности предоставляет услуги по независимому внешнему аудиту безопасности программного кода и тестированию на проникновения. Компания выполняет аудит безопасности различного кода, в том числе разработанного на компилируемых языках программирования без предоставления исходного кода. В рамках внедрения требовалось повысить эффективность динамического тестирования безопасности программных продуктов методом фаззинга, который используется в компании в таких ситуациях. Для этого было принято решение внедрить разработанный в рамках данной работы программный комплекс и предоставить графический интерфейс для его использования. Пример разработанного в рамках внедрения графического интерфейса и поиска уязвимостей в FTP сервере представлен на рисунке 4.8.:

Рисунок 4.8.

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

1) Информация о найденных уязвимостях, их адресах, а также набор данных, которые привели к этой уязвимости.

2) Информация о покрытии кода (покрытие процедур, базовых блоков, инструкций, расчет значений метрик).

3) Информация о производительности тестирования.

4) Информация о сгенерированных тестовых данных.

5) Визуализация графа вызовов процедур.

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

4.4.5. Внедрение результатов работы в образовательный процесс ФГБОУ ВО СибГАУ им. М.Ф. Решетнева Результаты диссертационной работы были внедрены в учебный процесс для студентов кафедры безопасности информационных технологий СибГАУ им. М.Ф.

Решетнева в рамках курса: «Программно–аппаратные средства защиты информации». Программный комплекс позволяет на практике познакомить студентов с современными подходами в области промышленной разработки программного обеспечения в части тестирования и выявления уязвимостей.

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

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

Кроме того, разработанные в работе алгоритмы использовались для проведения соревнований по практическим аспектам информационной безопасности для школьников и студентов в 2014-2015 (KrasCTF 2014, Spring CTF SibSAU 2015).

4.5. Выводы В первом разделе настоящей главы приводится описание общей схемы взаимодействия всех модулей и подсистем в виде единого программного комплекса. Для повышения гибкости и масштабируемости вся система была построена по модульной архитектуре так, чтобы каждый модуль мог работать отдельно. Такой подход позволяет использовать систему независимо от источника тестовых данных, таким образом может использоваться любой из доступных на сегодняшний день инструментов или подходов к их получению. При этом стоит отметить, что все компоненты системы (за исключением декомпилятора) могут использоваться как в Windows, так и в ОС семейства Linux.

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

Для трёх метрик из 25 в результате экспериментальной оценки было установлено, что это утверждение является истинным. В свою очередь сравнительная экспериментальная оценка показала, что наибольшую эффективность для обнаружения уязвимостей в бинарном коде показывает предложенная автором экспериментальная метрика, построенная на базе метрики Холстеда B.

В следующих разделах приводится оценка эффективности каждой реализованной подсистемы по отдельности и программного комплекса в целом. Экспериментальный анализ эффективности подсистемы автоматизированного поиска уязвимостей в трассе показал, что разработанные во второй главе алгоритмы позволяют детектировать на 5 типов уязвимостей больше в ОС Windows и на 4 типа уязвимостей больше в Linux по сравнению с аналогами.

Экспериментальное сравнение подсистемы расчета полноты и повышения эффективности показало, что разработанный алгоритм позволяет в среднем снизить временные затраты, требуемые для поиска уязвимостей, на 26-29% для любой из существующих на сегодняшний день систем фаззинга.

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

В заключительном разделе приводится описание внедрения результатов работы в рамках поддержки проектов с открытым исходным кодом Google, элементов модуля декомпиляции в проект по анализу бинарного кода IBM Research Israel, программного комплекса в процесс разработки ООО ИнфоТраст и процесс аудита безопасности ПО ООО ГуардНет. Кроме того программный комплекс используется в учебном процессе на кафедре безопасности информационных технологий СибГАУ им М.Ф. Решетнева.

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

По результатам проведенной работы можно сделать следующие выводы:

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

2. Разработанная модель автоматизированного поиска уязвимостей в трассе программы позволила формально определить критерий возникновения уязвимости в исполняемом коде и осуществлять поиск уязвимостей для каждого выполненного состояния в трассе с учетом распределения защищаемой информации в памяти программы.

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

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

5. Проведенная экспериментальная оценка реализованного алгоритма автоматизированного поиска уязвимостей в трассе программы показала, что разработанное решение позволяет детектировать на 5 типов уязвимостей больше в ОС Windows и на 4 типа уязвимостей больше в Linux по сравнению с существующими аналогами.

6. Проведённая экспериментальная оценка реализованного алгоритма расчета полноты и повышения эффективности показала, что разработанное решение позволяет сократить временные затраты на детектирование уязвимостей в среднем на 26-29%.

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

Публикации автора по теме работы приведены в списке литературы [101-109] и [114-116].

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

Список сокращений и условных обозначений

1. РФ – Российская Федерация.

2. ПО – программное обеспечение.

3. ФСТЭК – Федеральная служба по техническому и экспортному контролю.

4. ФСБ – Федеральная служба безопасности.

5. Минобороны – Министерство обороны.

6. НДВ – недекларируемые возможности.

7. ГОСТ – государственный стандарт.

8. ГПУ – граф потока управления.

9. ОС – операционная система.

10. ДКА – детерминированный конечный автомат.

11. КС – грамматика – контекстно-свободная грамматика.

12. ДБИ – динамическая бинарная инструментация.

13. БД – база данных.

14. СУБД – система управления базой данных.

15. LOC – метрика количества строк кода.

16.BBLS – метрика количества базовых блоков.

17.Condit – метрика количества проверок условий.

18. Calls – метрика количества вызовов процедур.

19. Assign – метрика количества присваиваний переменным значений.

20. СС – цикломатическая сложность.

21. СС_mod – модифицированная цикломатическая сложность.

22. Jilb – метрика Джилба.

23. ABC – метрика ABC.

24. R – метрика отношения количества дуг графа к числу базовых блоков.

25. H.B, H.D, H.V, H.N*, H.V – метрики Холстеда B, D, V, N и V.

26. Pi – метрика Пивоварского.

27. Harr – метрика Харрисона.

28. Cocol – метрика Кокола.

29. Bound – метрика граничных значений.

30. Span – метрики спена.

31. Global – метрика количества обращений к глобальным переменным.

32. Oviedo – метрика Овиедо.

33. Chepin – метрика Чепина.

34. C&S – метрика Карда и Гласса.

35. H&F – метрика Генри и Кафура.

36. Exp – экспериментальная метрика.

37.CVE – The Common Vulnerabilities and Exposures.

38.OWASP – Open Web Application Security Project.

39. NIST – National Institute of Standards and Technology.

Словарь терминов Бинарный код, машинный код, исполняемый код: код, исполняемый процессором.

Дефект, ошибка: каждое отдельное несоответствие продукции установленным требованиям.

Тестирование - деятельность, направленная на обнаружение дефектов в программном обеспечении.

Полнота тестирования – отношение количества выполненных в ходе тестирования базовых блоков программы к общему количеству достижимых базовых блоков в программе.

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

Программное обеспечение: совокупность программ системы обработки информации и программных документов, необходимых для их эксплуатации.

Исходный код: компьютерная программа в текстовом виде на каком-либо языке программирования.

Дефект безопасности ПО: отдельное несоответствие ПО установленным требованиям безопасности.

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

Целостность обрабатываемой ПО информацией - способность ПО обеспечивать неизменность информации в условиях случайного или преднамеренного искажения.

Доступность обрабатываемой ПО информации – состояние информации при котором субъекты, имеющие права доступа, могут реализовать их беспрепятственно.

Конфиденциальность обрабатываемой ПО информации – состояние информации, при котором доступ к ней осуществляют только субъекты, имеющие на неё право.

Защищаемая информация - информация, являющаяся предметом собственности и подлежащая защите в соответствии с требованиями правовых документов или требованиями, устанавливаемыми собственником информации.

Безопасность информации: состояние защищенности информации, при котором обеспечены её конфиденциальность, целостность, доступность.

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

Проприетарное (закрытое) программное обеспечение: программное обеспечение, распространяемое на условиях простой (неисключительной) или исключительной лицензии, ограничивающей использование программы и/или запрещающей пользователю внесение изменений в программу для ЭВМ (переработку) и/или распространение изменений (переработанной) программы.

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

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

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

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

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

Целостность информации: состояние информации, при котором отсутствует любое ее изменение либо изменение осуществляется только преднамеренно субъектами, имеющими на него право.

Доступность информации: состояние информации, при котором субъекты, имеющие права доступа, могут реализовать их беспрепятственно.

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

Модель угроз: физическое, математическое, описательное представление свойств или характеристик угроз безопасности информации.

Буфер: рабочая область памяти при пересылке данных.

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

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

Язык высокого уровня: язык программирования, понятия и структура которого удобны для восприятия человеком.

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

Транслятор: программа или техническое средство, выполняющие трансляцию программы.

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

Дизассемблирование: процесс и/или способ получения исходного текста программы на ассемблере из программы в бинарном коде.

Дизассемблер: транслятор, преобразующий машинный код в программу, на языке ассемблера.

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

Декомпиляция: процесс восстановления исходного кода декомпилятором.

Фаззинг: процесс тестирования программного обеспечения при помощи передачи потенциально ошибочных данных.

Фаззер: программа или техническое средство для проведения фаззинга.

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

Список литературы

1. Международная база уязвимостей CVE // Доступ осуществлен 30.07.2015 по адресу: https://cve.mitre.org.

2. Исследование международной базы уязвимостей CVE // Доступ осуществлен 30.07.2015 по адресу: http://opennet.ru/opennews/art.shtml?num=36287.

3. Coverity Scan: 2013 Open Source Report. Доступ осуществлен 30.07.2015 по адресу: http://softwareintegrity.coverity.com/

4. Руководящий документ. Положение о сертификации средств защиты информации по требованиям безопасности информации // Сборник руководящих документов по защите информации от несанкционированного доступа. – М.: Гостехкомиссия России, 1995 – 7 с.

5. Руководящий документ.

Защита от несанкционированного доступа к информации. Часть 1. Программное обеспечение средств защиты информации.

Классификация по уровню контроля отсутствия недекларированных возможностей: [руководящий документ: утвержден решением председателя Гостехкомиссии при Президенте РФ от 4 июня 1999 №114] – М.: Гостехкомиссия России, 1999

– 9 с.

6. Постановление Правительства РФ от 26 июня 1995 г. № 608 «О сертификации средств защиты информации» – М.: Российская газета. 1995 – 7 с.

7. Приказ ФСТЭК России от 18 февраля 2013 г. N 21 «Об утверждении состава и содержания организационных и технических мер по обеспечению безопасности персональных данных при их обработке в информационных системах персональных данных» – М.: ФСТЭК России. 1995 – 20 с.

8. Rice H.G. Classes of recursively enumerable sets and their decision problems / H.G. Rice // Transactions of the American Mathematical Society – 1953 – p. 358–366.

9. Gogul B. WYSINWYX: What you see is not what you execute / B. Gogul T.

Reps, D. Melski, T. Teitelbaum // ACM Transactions on Programing Languages and Systems – 2010 – № 32 (6) – p. 202-213.

10. Rahul T. Impact of software vulnerability announcements on the market value of software vendors-an empirical investigation. / Rahul T., Wattal S. // IEEE Transactions on Software Engineering – 2005 – № 38 (8) – pp. 544 – 557.

11. ГОСТ Р. 27.002-2009. Надежность в технике. Термины и определения – М.:

ВНИИМАШ, 2009 – 3 с.

12. ГОСТ Р53114-2008. Защита информации. Обеспечения информационной безопасности в организации. Термины и определения – М.: Стандартинформ, 2008

– 20 с.

13. ГОСТ Р 50922-2006 Защита информации. Основные термины и определения – М.: Стандартинформ, 2008 – 12 c.

14. Dowd M. The art of software security assessment: Identifying and preventing software vulnerabilities / M. Dowd, J. McDonald, J. Schuh – Boston, USA: AddisonWesley Professional, 2006 – 1244 p.

15. Krsul I.V. Software vulnerability analysis: PhD dissertation / Krsul Ivan Victor

– Purdue University, USA, 1998 – 188 p.

16. Christey S. Vulnerability type distributions in CVE [Электронный ресурс] /

– – Режим доступа:

Christey S., Martin R.A // Mitre report 2007 http://cwe.mitre.org/documents/vuln-trends/index.html.

17. Piessens F. A taxonomy of causes of software vulnerabilities in internet software / Piessens F. // Supplementary Proceedings of the 13th International Symposium on Software Reliability Engineering. IEEE Computer Society Press. – 2002. – p. 47-52.

18. Cifuentes C. Interprocedural data flow recovery of high-level language code from assembly. / Cifuentes C., Fraboulet A. // Technical Report 421. – University Queensland. – 1997. – 16 p.

19. Долгова, К. Н. О некоторых задачах обратной инженерии. / Долгова, К. Н., Чернов А. В. // Труды Института системного программирования РАН. – 2008 – №15 – с. 119-134.

20. Дизассемблер IDA. // Доступ осуществлен 30.07.2015 по адресу:

https://www.hex-rays.com/products/ida/

21. Встроенный отладчик и дизассемблер в Linux gdb. // Доступ осуществлен 30.07.2015 по адресу: www.gnu.org/s/gdb/

22. Интерактивный отладчик OllyDbg. // Доступ осуществлен 30.07.2015 по адресу: www.ollydbg.de.

23. Интерактивный отладчик WinDbg. // Доступ осуществлён по адресу www.windbg.org 30.07.2015.

24. Система динамической бинарной инструментации Intel PIN. // Доступ осуществлен 30.07.2015 по адресу: https://software.intel.com/en-us/articles/pin-adynamic-binary-instrumentation-tool.

25. Система динамической бинарной инструментации DynamoRIO. // Доступ осуществлен 30.07.2015 по адресу: www.dynamorio.org.

26. Cova M. Static detection of vulnerabilities in x86 executables. / Cova M., Felmetsger V., Banks G., Vigna G. // IEEE 22nd Annual Conference in Computer Security Applications ACSAC'06 – 2006 – pp. 269-278.

27. King J. C. Symbolic Execution and Program Testing. / King J. C. // Journal of the ACM – 1976 - № 19(7) – pp. 385–394.

28. De Moura L. Z3: An efficient SMT solver. / De Moura L., Bjrner N // InTools and Algorithms for the Construction and Analysis of Systems, – Springer Berlin Heidelberg – 2008 – pp. 337-340.

29. Brummayer R. Boolector: An efficient SMT solver for bit-vectors and arrays. / Brummayer R., Biere A. // In Tools and Algorithms for the Construction and Analysis of Systems. – Springer Berlin Heidelberg – 2009 – p. 174-177.

30. Bofill M. The barcelogic SMT solver. / Bofill M., Nieuwenhuis R., Oliveras A., Rodrguez-Carbonell E., Rubio A. // In Computer Aided Verification – Springer Berlin Heidelberg – 2008. – p. 294-298.

31. Ganesh V. A decision procedure for bit-vectors and arrays. / Ganesh V., Dill D.L. // In Computer Aided Verification – Springer Berlin Heidelberg – 2007 – p. 519Каушан В.В. Методы поиска ошибок в бинарном коде / В.В. Каушан, Ю.В. Маркин, В.А. Падарян, А.Ю. Тихонов // Технический отчет Института системного программирования РАН – 2013 – № 2013-1 – с 42.

33. Desoli G. Deli: A new run-time control point / Desoli G., Mateev N., Duesterwald E., Faraboschi P., Fisher J.A. // in Proceeding of the 35th annual ACM/IEEE international symposium on Microarchitecture – IEEE Computer Society Press – 2002 – p. 257-268.

34. Miller B. P. An Empirical Study of the Reliability of UNIX Utilities / Miller B.

P., Fredriksen L, So B. // Communications of the ACM – 1990 – №33 (12) – p. 32 - 44.

35. Благодаренко А.В. Разработка метода, алгоритмов и программ для автоматического поиска уязвимостей программного обеспечения в условиях отсутствия исходного кода: дис. … канд. тех. наук: 05.13.19 / Благодаренко Артем Васильевич. – Таганрог, 2011. – 129 с.

36. Довгалюк П.М. Внесение неисправностей в программу с использованием детерминированного воспроизведения / П.М. Довгалюк, Ю.В. Маркин. // Труды Института системного программирования РАН/ – 2014 – том 26, вып. 2 – с 119.

37. Аветисян А.И. Восстановление структуры бинарных данных по трассам программ / А.И. Аветисян А.И. Гетьман // Труды Института системного программирования РАН. – 2010 – т. 19 – с. 195 – 214.

38. Banks G. SNOOZE: toward a Stateful NetwOrk prOtocol fuzZEr. / Banks G, Cova M., Felmetsger V., Almeroth K., Kemmerer R., Vigna G. // In Information Security - Springer Berlin Heidelberg – 2006 – p. 343-358.

39. Kim H. Practical security testing using file fuzzing. / Kim H., Choi Y., Lee D., Lee D. // 10th International Conference on Advanced Communication Technology. – 2008 – vol. 2 – p. 1304-1307.

40. Brumley, D. Automatic patch-based exploit generation is possible: Techniques and implications. / Brumley, D., Poosankam, P., Song, D., Zheng, J. // IEEE Symposium on Security and Privacy – 2008 – p. 143-157.

41. Takanen A. Fuzzing for software security testing and quality assurance / Takanen A., Demott J.D., Miller C. – USA., Artech House Norwood, 2008– 230 p.

42. Schwartz E.J. All you ever wanted to know about dynamic taint analysis and forward symbolic execution (but might have been afraid to ask). / Schwartz E.J., Avgerinos T., Brumley D. // IEEE Symposium on Security and Privacy (SP). – 2010 – pp.

317-331.

43. Cadar C. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. / Cadar C., Dunbar D., Engler D. // In Proceedings of the USENIX Symposium on Operating System Design and Implementation. – 2008 – vol. 8

– pp. 209-224.

44. Godefroid P. DART: directed automated random testing. / Godefroid P., Klarlund N., Sen K // ACM Sigplan Notices – 2005 – vol. 40 № 6 – pp. 213-223.

45. Sen K. CUTE: A concolic unit testing engine for C. / Sen K., Marinov D., Agha G. // In Proceedings of the joint meeting of the European Software Engineering Conference and the ACM Symposium on the Foundations of Software Engineering – 2005 – Vol. 30, No. 5 – pp. 263-272.

46. Тихонов А. Ю. Развитие taint-анализа для решения задачи поиска программных закладок. / А. Ю. Тихонов, А. И. Аветисян. // Труды Института системного программирования РАН – 2011 – 20 – 8 c.

47. Last M. Effective Black-Box Testing with Genetic Algorithms / M. Last, S. Eyal, A. Kandel // Haifa Verification Conference. Lecture Notes in Computer Science – Springer – 2005 – vol. 3875 – pp. 134-148.

48. Sparks S. Automated vulnerability analysis: Leveraging control flow for evolutionary input crafting. / Sparks S., Embleton S., Cunningham R., Zou C // Twenty-Third Annual Conference in Computer Security Applications IEEE ACSAC 2007 – 2007 – pp. 477-486.

49. Seagle R.L. A Framework for File Format Fuzzing with Genetic Algorithms:

PhD thesis / Seagle R.L. - Univ. of Tennessee, Knoxville – 2012 – 144 p.

50. Rawat S. An evolutionary computing approach for hunting buffer overflow vulnerabilities: A case of aiming in dim light. / Rawat S., Mounier L // IEEE European Conference on Computer Network Defense (EC2ND) – 2010 – pp. 37-45.

51. Godefroid P., Kiezun A., Levin M.Y. Grammar-based whitebox fuzzing. / Godefroid P., Kiezun A., Levin M.Y // ACM Sigplan Notices. – 2008 – vol. 43 № 6 – pp. 206-215.

52. Sutton M. Fuzzing: Brute Force Vulnerability Discovery. / Sutton M., Greene A., Amini P. – USA: Addison-Wesley Professional – 2007 – 576 p.

53. DeMott J. The evolving art of fuzzing / DeMott J. // DefCon 14 – 2006.

54. Fuzzing for software vulnerability discovery: technical report / Clarke T. – Department of Mathematic, Royal Holloway University of London, 2009 – RHUL-MAp.

55. Duran D. Targeted taint driven fuzzing using software metrics. / Duran D., Weston D., Miller M. // CanSecWest 2011.

56. Iozzo V. 0-knowledge fuzzing [электронный ресурс] / Iozzo V. Режим доступа: http://resources.sei.cmu.edu/asset_files/WhitePaper/2010_019_001_53555.pdf

57. McCabe T.J. A complexity measure. / McCabe T.J. // IEEE Transactions on Software Engineering – 1976 – №4 – pp. 308-320.

58. Bruening D. Practical memory checking with Dr. Memory. / Bruening D., Zhao Q. // In Proceedings of the 9th Annual IEEE/ACM International Symposium on Code Generation and Optimization – 2011 – pp. 213-223

59. Nethercote N. Valgrind: a framework for heavyweight dynamic binary instrumentation. / Nethercote N., Seward J // ACM Sigplan notices – №42(6) – 2007.

60. Lanzi A. A smart fuzzer for x86 executables / Lanzi A., Martignoni L., Monga M., Paleari R. // IEEE Third International Workshop on Software Engineering for Secure Systems. SESS'07. – 2007 – pp. 7-7.

61. Zhang S. Combined static and dynamic automated test generation. / Zhang S., Saff D., Bu Y., Ernst M. D. // Proceedings of the 2011 ACM International Symposium on Software Testing and Analysis. – 2011 – pp. 353-363.

62. Тихонов А.Ю. Комбинированный (статический и динамический) анализ бинарного кода. / А.Ю. Тихонов, А.И. Аветисян // Труды Института системного программирования РАН – 2012 – том 22 – cтр. 131-152.

63. Фреймворк для разработки утилит динамического анализа Valgrind. // Доступ осуществлен 07.11.2014 по адресу: www.valgrind.org

64. Ермаков М. К. Avalanche: применение параллельного и распределенного динамического анализа программ для ускорения поиска дефектов и уязвимостей. / М. К. Ермаков, А. Ю. Герасимов // Труды Института системного программирования РАН - 2013 – том 25 – с. 29 - 38.

65. Drewry W. Flayer: Exposing Application Internals. / Drewry W., Ormandy T. // WOOT – 2007 – №7– pp. 1-9.

66. Программный комплекс DrMemory // Доступ осуществлен 30.07.2015 по адресу: www.drmemory.org

67. Программный комплекс DynamoRIO // Доступ осуществлен 30.07.2015 по адресу: www.dynamorio.org

68. Программный комплекс SPIKE. // Доступ осуществлен 30.07.2015 по адресу: www.immunitysec.com/resources-freesoftware.shtml 69.. Программный комплекс Peach. // Доступ осуществлен 30.07.2015 по адресу: www.peachfuzzer.com

70. Программный комплекс Sulley. // Доступ осуществлен 30.07.2015 по адресу: https://github.com/OpenRCE/sulley

71. Программный комплекс American Fuzzy Lop // Доступ осуществлен 30.07.2015 по адресу: http://lcamtuf.coredump.cx/afl

72. Программный комплекс CERT Fuzzer // Доступ осуществлен 30.07.2015 по адресу: https://www.cert.org/vulnerability-analysis/tools/bff.cfm?

73. Шудрак М.О. Анализ вредоносных объектов методом декомпиляции бинарного кода. XI Всероссийский конкурс – конференция студентов и аспирантов по информационной безопасности «IEEE SibInfo – 2011». Томск – 2011

74. Shudrak M. The new technique of decompilation and its application in information security. / Shudrak M. Zolotarev V. // UKSim 6th European Symposium on Computer Modeling and Simulation. Valletta, Malta. 2012 – pp. 115 – 120.

75. Shudrak M. The system of dynamic software security and reliability analysis with high-performance. / Shudrak M., Zolotarev V. // Third International Conference on High Performance Computing HPC-UA 2013. Kyiv, Ukraine. 2013 – pp. 354-357.

76. Шудрак М.О. Автоматизированный поиск уязвимостей в бинарном коде. / Шудрак М.О. Хеирхабаров Т.С. // Материалы XVI Международной научной конференции «Решетневские чтения». Красноярск. 2012 – стр. 691-692.

77. Шудрак М.О. Методика и программное средство защиты кода от несанкционированного анализа. / Шудрак М.О. Лубкин И.А. // Программные продукты и системы. Тверь. 2012 – №4 – 176-180.

78. Шудрак М.О. Методика декомпиляции бинарного кода и её применение в сфере информационной безопасности / Шудрак М.О. Лубкин И.А. // Материалы II Всероссийской молодежной конференции «Перспектива – 2012». Таганрог. 2012 – стр. 197-202

79. Shudrak M. The technique of dynamic binary analysis and its application in the information security sphere / Shudrak M., Zolotarev V. // In Proceedings of IEEE EuroCon – 2013, Zagreb, Croatia. 2013 – pp. 112-118

80. Шудрак М.О. Методика декомпиляции бинарного кода и её применения в сфере информационной безопасности. / Шудрак М.О. Лубкин И.А. // Материалы Всероссийской научно-технической конференции студентов, аспирантов и молодых ученых ТУСУР. Томск. 2012 – стр. 245-250.

81. Шудрак М.О. Анализ вредоносных объектов методом декомпиляции бинарного кода. XI Всероссийский конкурс – конференция студентов и аспирантов по информационной безопасности «IEEE SibInfo – 2011». Томск – 2011.

82. Basili V.R. Software errors and complexity: an empirical investigation. / Basili V.R., Perricone B.T. // Communications of the ACM – 1984 - 27.1 – pp. 42-52.

83. Khoshgoftaar T.M. Predicting software development errors using software complexity metrics. / Khoshgoftaar T.M., Munson J.C. // IEEE Journal on Selected Areas in Communications. – 1990 – vol.8 №2 – pp.253-261.

84. Olague H. M. Empirical validation of three software metrics suites to predict fault-proneness of object-oriented classes developed using highly iterative or agile software development processes. / Olague H. M., Etzkorn L. H., Gholston S., Quattlebaum S. // IEEE Transactions on Software Engineering – 2007 – vol. 33.6 – pp. 402Метрики сложности кода: технический отчет. / Ледовских И.Н. – М.: Институт системного программирования РАН, 2012 – 22 с.

86. Halstead M. H. Elements of Software Science / Halstead M. H. –Amsterdam:

Elsevier North-Holland Inc – 127 p.

87. Abran A. Software Metrics and Software Metrology / Abran A. – Hoboken, NJ:

Wiley-IEEE Computer Society Press. – 2010 – 348 p.

88. Harrison W.A. A complexity measure based on nesting level. / Harrison W.A., Magel K. I. // ACM Sigplan Notices 16.3 – 1981 – 63-74.

89. Henry S. Software structure metrics based on information flow. / Henry S., Kafura D. // IEEE Transactions on Software Engineering – 1981 – vol. 5 – pp. 510-518

90. Oviedo E. I. Control Flow, Data Flow and Program Complexity. / Oviedo E. I. // In Proceedings of COMPSAC’80 – 1980 – pp. 146-152

91. Chapin N. An entropy metric for software maintainability / Chapin N. // In Proceeding of the Twenty-Second Annual Hawaii International Conference on System Sciences, vol. II: Software Track – 1989 – pp. 522 - 523

92. Howard M. The security development lifecycle. SDL: A Process for Developing Demonstrably More Secure Software (Developer Best Practices) / Howard M., Lipner S. – USA: O'Reilly Media, Inc., 2009 – 352 p.

93. Schneidewind N. F. Methodology for validating software metrics. / Schneidewind N. F. // IEEE Transactions on Software Engineering – 1992 – vol. 18.5 –pp. 410Шудрак М.О. Статический анализ бинарного кода в сфере информационной безопасности. / Шудрак М.О., Лубкин И.А., Золотарев В.В. // Известия ЮФУ.

Технические науки. Таганрог. 2012 – №12 – стр. 54-60.

95. Luk C. K. Pin: building customized program analysis tools with dynamic instrumentation. / Luk C. K., Cohn R., Muth R., Patil H., Klauser A., Lowney G., Hazelwood, K. // In Acm Sigplan Notices – 2005 – Vol. 40 № 6 – pp. 190-200.

96. Uh G. R. Analyzing dynamic binary instrumentation overhead. / Uh G. R., Cohn R., Yadavalli B., Peri R., Ayyagari R. // In WBIA Workshop at ASPLOS – 2006.

97. Intel 64 and IA-32 Architectures Software Developer’s Manual. Volume 3B:

System Programming Guide, Part 2. Доступ осуществлен 19.02.2015 по адресу:

http://intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architecturessoftware-developer-vol-3b-part-2-manual.html

98. Шудрак М.О. Методика декомпиляции бинарного кода и её применение в сфере информационной безопасности. / Шудрак М.О., Лубкин И.А., Золотарев В.В. // Безопасность информационных технологий НИЯУ МИФИ. Москва. 2012 – №3 – стр. 75-80

99. Shudrak M. A new technique and tool for vulnerabilities detection in binary executables [электронный журнал]. / Shudrak M. // Kaspersky CyberSecurity for the

Next Generation 2013 // London, United Kingdom 2013 – Режим доступа:

http://www.kaspersky.com/images/Maxim_Shudrak.pdf.

100.Шудрак М.О. Методика динамического анализа уязвимостей в бинарном коде. / Шудрак М.О. Золотарев В.В. Лубкин И.А // Вестник Сибирского государственного аэрокосмического университета им М.Ф. Решетнева. Красноярск. 2013

– №4(50) – стр. 84-87

101. Открытая база уязвимостей exploit-db. http://exploit-db.com Доступ осуществлен 04.05.2015.

102.Шудрак М.О. Методика и программный комплекс для динамического поиска уязвимостей в бинарном коде. / Шудрак М.О. // Программные продукты и системы. Тверь. 2014 – №4 – стр. 176База уязвимостей NIST. // Доступ осуществлен 23.07.2015 по адресу:

http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-4854

104. Информация об уязвимости CVE-2013-4854 и официальная благодарность от Internet System Consortium. // Доступ осуществлен 23.07.2015 по адресу:

https://kb.isc.org/article/AA-01015/0/CVE-2013-4854%3A-A-specially-crafted-querycan-cause-BIND-to-terminate-abnormally.html.

–  –  –

2 Название инструмента со знаком + в таблице (например, Sulley+) обозначает инструмент с интегрированной подсистемой расчета полноты и повышения эффективности тестирования.

–  –  –

Приложение 6. Свидетельства о регистрации программы для ЭВМ Приложение 7. Акты внедрения Приложение 8. Дипломы и награды 180



Pages:     | 1 |   ...   | 2 | 3 ||

Похожие работы:

«Марченко Василий Сергеевич Методика оценки чрезвычайного локального загрязнения оксидами азота приземной воздушной среды вблизи автодорог 05.26.02 – безопасность в чрезвычайных ситуациях (транспорт) Диссертация на соискание учёной степени кандидата технических наук Научный руководитель: к.х.н., доцент Ложкина Ольга Владимировна Санкт-Петербург Оглавление Введение 1 Аналитический обзор...»

«Музалевская Екатерина Николаевна ЭКСПЕРИМЕНТАЛЬНОЕ ОБОСНОВАНИЕ ПРИМЕНЕНИЯ МАСЛА СЕМЯН АМАРАНТА ДЛЯ КОРРЕКЦИИ ОСЛОЖНЕНИЙ, ВЫЗЫВАЕМЫХ ИЗОНИАЗИДОМ 14.03.06 Фармакология, клиническая фармакология ДИССЕРТАЦИЯ на соискание ученой степени кандидата фармацевтических наук Научный руководитель: д.м.н., профессор Николаевский Владимир...»

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







 
2016 www.konf.x-pdf.ru - «Бесплатная электронная библиотека - Авторефераты, диссертации, конференции»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.