Тип работы:
Предмет:
Язык работы:


РАЗРАБОТКА МОДУЛЯ ОБНАРУЖЕНИЯ ВЕРСИОННЫХ УЯЗВИМОСТЕЙ, ОПИСАННЫХ НА ЯЗЫКЕ OVAL

Работа №186296

Тип работы

Дипломные работы, ВКР

Предмет

прочее

Объем работы54
Год сдачи2020
Стоимость4800 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
10
Не подходит работа?

Узнай цену на написание


Реферат
ВВЕДЕНИЕ 7
1 Анализ 9
1.1 Обзор языка OVAL 9
1.2 Определение требований 11
1.2.1 Функциональные требования 11
1.2.2 Нефункциональные требования 12
1.3 Модель предметной области 12
1.4 Используемые технологии и инструменты 15
2 Исследование текущей версии модуля 17
2.1 Программный интерфейс модуля 17
2.2 Разбор XML документов 20
2.3 Обнаружение уязвимостей 23
3 Подготовка среды для тестирования нового модуля 29
3.1 Разработка среды для тестирования 29
3.2 Измерения производительности и потребления ресурсов 30
4 Реализация новой версии модуля 33
4.1 Замена генерации AST 33
4.2 Кэширование проверок 34
4.3 Промежуточные измерения 37
4.4 Использование SQLite в качестве хранилища 40
4.5 Финальные тесты производительности и потребления ресурсов 44
5 Тестирование новой версии модуля 48
ЗАКЛЮЧЕНИЕ 51
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ 52
ПРИЛОЖЕНИЕ А 53


Выделяют следующие виды уязвимостей информационных систем (ИС) по области происхождения:
1 Уязвимости кода.
2 Уязвимости конфигурации.
3 Уязвимости архитектуры.
4 Организационные уязвимости.
5 Многофакторные уязвимости.
Одной из важнейших функций программы MP8 является обнаружение уязвимостей первых двух видов. Частным случаем уязвимости кода является версионная уязвимость. В отличие от уязвимостей конфигурации, версионные уязвимости легко обнаружить — достаточно определить версии всего установленного ПО на сканируемой ЭВМ, после чего сравнить полученные данные с некоторой «базой знаний», в которой содержится список уязвимых версий.
В программе MP8 «база знаний» версионных уязвимостей хранится в виде документов на языке OVAL. Вычислением наличия уязвимостей на сканируемой ЭВМ занимается отдельный модуль. Этот модуль собирает со сканируемой системы всю необходимую информацию, после чего сравнивает её с документами OVAL и делает заключение о наличии или отсутствии определенных уязвимостей из «базы знаний».
Несмотря на то, что модуль соответствует всем функциональным требованиям, за время эксплуатации были выявлены следующие проблемы реализации:
1 Высокое потребление оперативной памяти (ОЗУ).
Количество уязвимостей, которые могут быть обнаружены MP8, постоянно растёт. Следовательно, увеличивается размер XML-документов, которые описывают условия существования этих уязвимостей. Текущая реализация модуля не приспособлена для работы с большими XML-документами — с ростом размера XML-документа значительно увеличивается потребление ОЗУ.
2 Утечки ОЗУ при многократном сканировании.
Было выявлено, что при многократном сканировании ЭВМ не вся выделенная во время работы модуля память возвращается операционной системе.
3 Плохая документация и отсутствие автоматических тестов.
Текущая реализация модуля плохо задокументирована и не имеет ни одного теста, что затрудняет внесение каких-либо изменений или исправлений недочетов.
4 Запутанный и неподдерживаемый код.
Исходный код модуля был написан давно, и его авторы уже не являются сотрудниками компании-производителя. Код имеет сложную и запутанную структуру, что, учитывая предыдущий недостаток, делает модификацию кода практически невозможной.
Таким образом, учитывая сложность внесения изменений в текущую реализацию и наличие серьезных проблем, которые нужно исправлять, было принято решение о полной переработке модуля вычисления версионных уязвимостей.
Цель данной работы — создание новой версии модуля вычисления версионных уязвимостей, описанных на языке OVAL.
Задачи, выполнение которых необходимо для достижения поставленной цели:
1 Выполнить анализ исходного кода текущей версии модуля.
2 Выявить причины неоптимального использования ресурсов.
3 Разработать новую версию модуля.
4 Протестировать производительность и потребление ресурсов новой версии модуля.
5 Провести интеграционное тестирование новой версии модуля.


Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В рамках проделанной работы были успешно выполнены все поставленные задачи:
1 Был выполнен анализ исходного кода модуля с целью выявления всех внешних зависимостей, совместимость с которыми было необходимо сохранить в процессе переработки. Проведение этого этапа разработки позволило внедрить новую версию модуля с минимальными изменениями в остальных частях кодовой базы.
2 В исходной версии модуля были выявлены проблемные места, приводящие к высокому потреблению оперативной памяти, а также низкой производительности. Это позволило сформулировать гипотезы о возможных способах оптимизации, которые могли бы решить существующие проблемы.
3 Была разработана новая версия модуля, улучшающая показатели производительности и потребления ресурсов. При этом разработка проводилась в два этапа: первая версия заложила основу иерархии объектов и их взаимодействия, а вторая оптимизировала потребление оперативной памяти.
4 На каждом этапе проводилось тестирование производительности и потребления ресурсов для сравнения показателей с исходной версии модуля. Тестирование показало, что финальная версия модуля использует до десяти раз меньше оперативной памяти, при этом имея большую скорость выполнения по сравнению с исходной версией.
5 Было проведено функциональное и интеграционное тестирования с целью выявления возможных недочетов в новой версии программы. По результатам тестирования было выявлено, что результаты сканирования новой версии модуля совпадают с результатами исходной версии.
Таким образом, цель работы в виде создания новой версии модуля вычисления версионных уязвимостей, описанных на языке OVAL, была достигнута. При этом были соблюдены все функциональные и нефункциональные требования, сформулированные перед разработкой.
Новая версия модуля была успешно внедрена в производство и за время эксплуатации не было выявлено недочетов в реализации.



1 Спецификация языка OVAL [Электронный ресурс].—2014.—URL: http://oval.mitre.Org/language/version5.11/oval-language-specification 12-18-2014.p df (дата обращения: 17.04.2020)
2 Kuhlman, Dave. A Python Book: Beginning Python, Advanced Python, and
Python Exercises [Электронный ресурс].—2013.—URL:
https://www.davekuhlman.org/python book 01 .pdf (дата обращения: 20.04.2020)
3 Рейтинг популярности языков программирования TIOBE Index [Электронный ресурс].—2020.—URL: https://www.tiobe.com/tiobe-index/ (дата обращения: 20.04.2020).
4 Pytest — why it's more popular than unittest? [Электронный ресурс].—2019.—URL: https://blog.j-labs.pl/2019/02/Pytest-why-its-more-popular-than-unittest
(дата обращения: 24.04.2020).
5 Pytest — Installing and Using plugins [Электронный
ресурс].—2020.—URL: https://docs.pytest.org/en/latest/plugins.html (дата
обращения: 28.04.2020).
6 Gitlab Features [Электронный ресурс].—2020.—URL:
https://about.gitlab.com/features/ (дата обращения: (дата обращения: 30.04.2020).
7 Приемы объектно-ориентированного. Паттерны проектирования. / Э. Гамма [и др.]. — Издательский дом «ПИТЕР», 2019.
8 М. Фаулер. Архитектура корпоративных программных приложений. / М. Фаулер. — Издательский дом «Вильямс», 2006.


Работу высылаем на протяжении 30 минут после оплаты.




©2025 Cервис помощи студентам в выполнении работ