-
Формат OVAL описывает уязвимости и методы (критерии) их определения в следующей связи: определение уязвимости "definition" содержит в себе основное описание уязвимости и ссылается на Тест по которому определяется наличие уязвимости. Тест ссылается на объект и его состояние, а также описывает условие их связи. Если состояние объекта соответствует условию, то уязвимость присутствует на объекте защиты.
-
Описание объектов: В начале базы в поле "Generator" указаны общие поля с информацией о версии Патча для которой создана база:
-
product_name
-
schema_version
-
timestamp
-
content_version
2.1 В следующем поле "definitions" представлен список определений уязвимостей "definition". Для каждого определения указываются:
- class: Тип
- id: Номер опредления (используется для составления связи между болями базы OVAL (связь определение-тест))
- version: Версия изменения определения уязвимости
- metadata: Поле в котором содержится:
- title: Название уязвимости
- affect: Набор полей в котором содержатся:
- family: Семейство ОС, для которой описана уязвимость
- platfrom: Версия ОС, для которой описана уязвимость
- reference: Ссылки на справочные сайты, содержащие описываемую уязвимость
- ref_url: Ссылка на источник
- ref_id: Номер уязвимости присвоенный в другом источнике
- source: Краткое наименование источника
- description: Описание уязвимости
- advisory: Набор полей, связанный с информацией о статусе угрозы, её направленности, и рейтинге уязвимости
- criteria: Содержит критерии для определения уязвимости
- operator: Определяет зависимость критериев (должен выполнится один или несколько, чтобы считать, что уязвимость применима к объекту)
- criterion: Набор полей, содержащий критерии
- comment: Описание условия проверки
- test_ref: Ссылка на конкретный тест для проверки условия
2.2 В поле "tests" представлен список тестов, в каждом тесте указываются объекты и их проверяемые состояния:
- check: Условие проверки по которому проверяется объект:
- id: Номер теста (для ссылки в "definition")
- version: Версия корректировки теста
- object|object_ref: Ссылка на проверяемый объект
- state|state_ref: Ссылка на состояние объекта
2.3 В поле "objects" представлен список проверяемых объектов:
- id: Номер объекта (для ссылки в "tests")
- version: Версия корректировки описания объекта
- name: Имя проверяемого объекта|тип проверки (операции)
- filepath: Путь к файлу соответствующему проверяемому объекту
- pattern: Регулярное выражение, для получения ифнормации об объекте с файла
2.4 В поле "states" представлен список состояний, для состояний указываются:
- id: Номер состояния (для ссылки в "tests")
- version: Версия корректировки описания состояния
- name: Имя проверяемого объекта|тип проверки (операции)
- filepath: Путь к файлу, для которого определяется состояние
- pattern: Регулярное выражение, для получения информации об объекте с файла
- evr: Описание состояния
- datatype: Тип данных, описывающих состояние
- operataion: Непосредственно состояние объекта 2.5 в поле "variables" содержится список значений переменных, в котором указываются:
- comment: Описание переменной
- datatype: Тип переменной
- id: Номер переменной
- version: Версия корректировки описания переменной указываются операции, значения и связь с объектами
- Из критериев можно убрать проверки redhatrelease2 key так как независимо от проверки подписи ключа, уязвимость присутствует в проверяемых пакетах
- В файле "Построение дерева полей.py" написан код для получения всех полей xml файла с примером значений каждого поля. В файле «Анализ уязвимостей.py.» произведен парсинг файла «rhel-8.oval.xml». Структура была переделана в формат словаря, что позволяет удобно обращаться к конкретной уязвимости по её ID. Структура Definition, Tests, Objects, States сохранена. К каждому объекту структуры также можно обращаться по ID. Структура сохранена, так как она является оптимальной для предотвращения повторения одних и тех же элементов в базе уязвимостей. Для удобства просмотра критериев была написана функция criteria_obrabotka, которая отображает текстовое описание всех проверок с соответствующим уровнем проверки. Удалены:
- Дата выявления уязвимости.
- Ссылки на сторонние ресурсы. По коду CVE можно автоматически найти ссылки. Версия изменения описания полей.
- Поле «Generator»