МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ООБРАЗОВАНИЯ
«ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
ИНСТИТУТ МАТЕМАТИКИ И КОМПЬЮТЕРНЫХ НАУК
КАФЕДРА ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ
Допустить к защите в ГАК
Заведующий кафедрой информационной безопасности
д.т.н. профессор
А.А. Захаров
(подпись)
«___» ________20__ г.
Глазунов Сергей Павлович
РАЗРАБОТКА РАСПРЕДЕЛЕННОЙ СИСТЕМЫ АВТОМАТИЗИРОВАННОГО ОБНАРУЖЕНИЯ УЯЗВИМОСТЕЙ В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ
(Выпускная квалификационная работа)
Научный руководитель:
д.т.н. профессор
__________________/А.А. Захаров/
(подпись)
Автор работы:
__________________ /С.П. Глазунов/
(подпись)
Оглавление
Введение 4
Глава 1.Обзор существуюих технологий выявления уязвимостей в программном обеспечении. 8
1.1.Основные типы уязвимостей. 8
1.1.1.Ошибки повреждения памяти. 8
1.1.2.Состояние гонки. 12
1.1.3.Отказ в обслуживании. 12
1.1.4.Уязвимости веб-приложений. 13
1.2.Методы обнаружения уязвимостей. 15
1.2.1.Принцип «белого ящика». 15
1.2.2.Принцип «черного ящика». 18
1.2.3.Принцип «серого ящика». 20
1.3.Фаззинг. 23
1.3.1.Определение. 23
1.3.2.Этапы фаззинга. 23
1.3.3.Методы фаззинга. 25
1.3.4.Типы фаззеров. 26
Глава 2.РАЗРАБОТКА РАСПРЕДЕЛЕННОЙ СИСТЕМЫ ПОИСКА УЯЗВИМОСТЕЙ. 28
2.1.Обоснование выбора технологии. 28
2.2.Требования к системе. 28
2.3.Модель системы. 29
2.4.Реализация сервера. 29
2.4.1.Общие сведения. 29
2.4.2.Структура базы данных. 30
2.4.3.Веб-интерфейс управления системой. 31
2.4.4.API для взаимодействия с клиентами. 33
2.5.Разработка клиента. 33
2.6.Разработка фаззера. 34
2.6.1.Общие сведения. 34
2.6.2.Основные структуры фаззера. 34
2.6.3.Сценарий работы. 35
2.7.Оценка эффективности системы. 36
2.7.1.Методика испытаний. 36
2.7.2.Результаты. 36
ЗАКЛЮЧЕНИЕ 38
СПИСОК ЛИТЕРАТУРЫ 39
Введение
Актуальность темы дипломной работы. Задача поиска уязвимостей в программном обеспечении возникает в процессе разработки средств получения несанкционированного доступа специалистами государственных или частных разведывательных организаций, специальных служб либо киберпреступниками. Об актуальности этой задачи можно судить благодаря появляющимся в открытом доступе данным о вознаграждениях, которые предлагаются на «черном» рынке в обмен на информацию об уязвимостях - для наиболее популярных программных продуктов эта сумма может достигать сотен тысяч долларов США.[1][2]
Проблема обнаружения уязвимостей также является острой и для самих разработчиков ПО. Ведущие игроки на рынке информационных технологий используют новейшие средства затруднения эксплуатации вредоносных программ и методы проактивной защиты и, тем не менее, вынуждены каждый год исправлять сотни ошибок, связанных с безопасностью. Разумеется, для разработчиков предпочтительней находить подобные ошибки в процессе аудита приложения, а не в результате расследования уже произошедшего инцидента ИБ.
Стремление обнаружить уязвимость раньше, чем это удастся злоумышленникам, побуждает такие компании, как PayPal, Facebook или Google, организовывать собственные программы вознаграждения исследователей ИБ в обмен на данные об ошибках, причем бюджет наиболее крупных программ превышает миллион долларов.
Готовность сторон расходовать на информацию об уязвимостях значительные финансовые ресурсы позволяет предположить высокую заинтересованность в инструментах, облегчающих и тем более автоматизирующих процесс обнаружения ошибок, связанных с безопасностью.
Степень разработанности проблемы. Вопросы контроля качества и поиска уязвимостей в ПО становились предметом изучения многих отечественных исследователей, таких как Благодаренко А.В., Угрюмов Д.В., Миноженко А.В., Несов В.С., Маликов О.Р., Козлов Д. Д., Петухов А. А.
Однако используемый в данной работе метод обнаружения ошибок (фаззинг) достаточно подробно рассмотрен лишь иностранными авторами, среди которых Ари Таканен, Джаред ДеМотт, Чарльз Миллер и Скот Ламберт.
Целью дипломной работы является разработка распределенной системы автоматизированного обнаружения уязвимостей.
Поставленная цель обусловила следующие задачи дипломной работы:
разработать модель распределенной системы поиска уязвимостей;
имплементировать модель с помощью подходящих программных средств;
разработать нетривиальный фаззер, функционирующий в рамках данной распределенной системы;
оценить эффективность полученной системы в реальных условиях (обнаруженные в популярных приложениях ошибки должны подтвердить практическую значимость);
Объектом исследования выступает процесс обнаружения уязвимостей в ПО.
Предметом исследования в дипломной работе являются технологии фаззинга, применяемые в задаче поиска уязвимостей в ПО.
В качестве методологической и теоретической основой дипломной работы выступили работы отечественных и иностранных исследователей, посвященные динамическому анализу ПО и фаззингу в частности.
Теоретическая значимость дипломного исследования состоит в анализе существующих методов автоматизированного обнаружения уязвимостей и выявления наиболее оптимального из методов по соотношению сложности разработки и эффективности.
Практическая значимость работы определяется возможностью полноценного использования построенной системы в качестве одного из важных инструментов исследователя ИБ. Прозрачная масштабируемость и модульная структура системы при этом дает возможность использовать ее в течение неограниченного времени.
Новизна дипломной работы состоит в создании легко развертываемой и расширяемой системы обнаружения ошибок, связанных с безопасностью, с акцентом на веб-браузер в качестве цели (отражая тот факт, что браузер является наиболее привлекательной мишенью и в реальных условиях). Программного продукта со сходными характеристиками в процессе исследования не удалось обнаружить в открытом доступе.
Кроме того, суть фаззинга как метода такова, что каждый новый нетривиальный фаззер является в некотором роде уникальным и со значительной долей вероятности в течение определенного времени будет способен обнаруживать новые уязвимости.
Наиболее существенные результаты, полученные в процессе исследования, состоят в следующем:
- разработана и имплементирована модель распределенной системы поиска уязвимостей, в основе которой лежит технология фаззинга;
- разработан фаззер, позволяющий оценить безопасность таких компонентов веб-браузера, как объектная модель, визуализация и прикладной интерфейс;
- эффективность системы доказана фактом обнаружения с ее помощью уязвимостей в популярном ПО.
|