Русский
Русский
English
Статистика
Реклама

XCCDF и OVAL основа формализации аудита информационной безопасности

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

SCAP иерархическая спецификация, разработанная NIST в2009году, которая позволяет автоматизировать аудит информационной безопасности, предоставляя инструмент перевода высокоуровневых требований вформализованный вид, понятный для SCAP-интерпретаторов (сканеров).

Основу SCAP составляют языки XCCDF иOVAL

Далее наоснове Benchmark отCIS (аудит Windows7), попробуем разобрать структуру ипонять логику образования документов XCCDF иOVAL. Некоторые детали янамеренно опущу, что позволит упростить изложение ипонимание, нобазовой логики ненарушит.

Погнали!

Extensible Configuration Checklist Description Format

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

Последняя версия спецификации XCCDF разработана NIST в2012году.

Структурно документ XCCDF состоит изгрупп groups, правил rules изначений values, которые содержаться втаком элементе документа, как эталоне benchmark.

Эталон (Benchmark)

Типичная структура эталона (benchmark)Типичная структура эталона (benchmark)

Эталон вдокументе XCCDF всегда содержится вединственном экземпляре. Фактически, эталон контейнер для других элементов документа.

Впервую очередь вэталоне указана общая информация одокументе ссылки наразличные источники, сведения одате создания, заголовок, описание ит.д. Изпримера ниже понятно, что документ предназначен для аудита Windows 7потребованиям STIG.

<Benchmark>  <title>Win7 Audit</title>  <description>"The Windows 7 Security Technical Implementation Guide (STIG) is published as a tool to improve the security of Department of Defense (DoD) information systems.  The requirements were developed from DoD consensus, as well as the Windows 7 Security Guide and security templates published by Microsoft Corporation."</description>  --- data omitted ---</Benchmark>

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

Важнейшим смысловым элементом эталона, асоответственно документа XCCDF, являются профили.

Профиль (Profile)

Профиль представляет собой набор изгрупп, правил, значений ит.д. Служит для компоновки элементарных требований под какой-либо конкретный стандарт или политику, например Audit and Audit Log Checks (Аудит иаудит журналов).

Впримере ниже представлен профиль требований STIG для класса систем MAC III- Administrative Sensitive (кнам эти требования никакого отношения неимеют, номогут использоваться как источник best practice). Впримере профиль содержит ссылку только наодну группу idref="V-15706, хотя вреальном документе ихможет быть несколько.

Прошу обратить внимание изапомнить (понадобится далее), что при ссылке нагруппу также указано selected="true". Это означает, что требования изэтой группы должны быть проверены при аудите попрофилю MAC-3_Sensitive.

<Profile id="MAC-3_Sensitive">  <title>"III - Administrative Sensitive"</title>  <description>"ProfileDescription"</description>  <select idref="V-15706" selected="true"/></Profile>

Группы имею различные служебные поля, предоставляющие общую информацию. Так из примера ниже понятно, что группа idref="V-15706" имеет отношение куправлению питанием (Power Mgmt).

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

<Group id="V-15706">  <title>Power Mgmt  Password Wake When Plugged In</title>  <description>GroupDescription</description>  <Rule id="SV-25168r1_rule">  --- data omitted ---  </Rule></Group>

Правило (Rule)

Правило также имеет различные информационные поля. Например, в поле описания правилаSV-25168r1_rule, изпримера ниже, указано, что правило предназначено для проверки того, запрашиваетсяли упользователя пароль при возобновлении работы изспящего режима.

<Rule id="SV-25168r1_rule">  <title>"Password is required on resume from sleep (plugged in)."</title>  <description>"This check verifies that the user is prompted for a password on resume from sleep (Plugged In)"</description>  <fixtext>"Configure the policy value for Computer Configuration - Administrative Templates > System > Power Management > Sleep Settings Require a Password When a Computer Wakes (Plugged In) to Enabled."</fixtext>  <check>    <check-export value-id="password-require" export-name="var:381700"/>    <check-content-ref name="def:3817"/>  </check></Rule>

Также правило может содержать информацию отом, чтонужно делать, если это оно невыполняется. Впримере выше в поле fixtext указано, что для исправления несоответствия нужно установить значение Enabled вAdministrative Templates > System > Power Management > Sleep Settings "Require aPassword When aComputer Wakes (PluggedIn).

Главное, что содержит правило это различные ссылки.

Впримере выше указаны ссылки напеременные: переменная password-require внутри документа; экспортируемая переменная var:381700, атакже ссылка наопределение всвязанном документе OVAL: def:3817.

Обо всем попорядку.

Переменная (Value)

<Value id="password-require" operator="equals">  <value>1</value>  <value selector="disabled">0</value>  <value selector="enabled">1</value></Value>

Внутренняя переменная документа XCCDF впримере выше имеет значение поумолчанию 1. Теперь вспомните, что впрофиле при ссылке нагруппу было указано selected="true". Этот указатель используется для включения или исключения соответствующих групп иправил изпроверки, что обеспечивается засчет присвоения переменной нужного значения.

Если selected="true" иoperator="equals", топеременной присваивается значение1.

Значение внутренней переменной password-require, через экспортируемую переменную var:381700 передается всвязанный документ OVAL.

Таким образом, перед обработкой документа OVAL, интерпретатор хранит ряд значений. Впримере выше интерпретатор хранит впамяти значение экспортируемой переменной var:381700 = 1иссылку наопределение OVAL def:3817.

Open Vulnerability and Assessment Language

Структура документа OVALСтруктура документа OVAL

OVAL (Open Vulnerability and Assessment Language) декларативный язык логических утверждений осостоянии системы. Это основной компонент стандарта SCAP, который используется для описания уязвимостей инеобходимой конфигурации системы.

Структурно документ OVAL состоит изопределений definition, критериев criteria, тестов test, объектов object исостояний state.

Определение (Definition)

Определения являются основными логическими блоками документа.

Как видно изрисунка выше, определения включают критерии выражения, которые спомощью булевой логики (И, ИЛИ, НЕ) позволяют оценить результаты тестов. Учитывая, что тесты возвращают результаты булева типа (true/false), определения также будут возвращать результаты булева типа.

Впримере ниже вблоке criteria задан логический оператор И (operator="AND"). Вэтом случае оннеиграет никакой роли, поскольку содержится ссылка всего лишь наодин тест tst:381700.

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

<definition id="def:3817" class="compliance">  <metadata>    <title>"Require a Password when a Computer Wakes (Plugged)"</title>    <affected family="windows">      <platform>Microsoft Windows 7</platform>    </affected>    <description>"Require a Password when a Computer Wakes (Plugged)"</description>  </metadata>  <criteria operator="AND">    <criterion test_ref="tst:381700"/>  </criteria></definition>

Тест (Test)

Главная задача тестов логическая связь объектов итребуемых состояний.

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

Так например для Windows, вчисле прочих, существует тип group_sid (group_sid_test, group_sid_object иgroup_sid_state), который позволяет поSID идентификатору оценить пользователей иподгруппы. Атип dpkginfo для Linux позволяет проверить информацию озаданном DPKG пакете. Тип textfilecontent независит отсистемы иобеспечивает проверку содержимого текстового файла, например файла конфигураций.

Впримере ниже указан тип registry, который позволяет работать сзаписями реестра вWindows.

Тест registry_test ссылается наобъект obj:381700 исостояние ste:381700, при этом для получения результатов теста необходимо проверить все указанные объекты (check="all"), при этом всистеме хотябы один должен существовать(check_existence="at_least_one_exists").

<registry_test id="tst:381700" check_existence="at_least_one_exists" check="all">  <object object_ref="obj:381700"/>  <state state_ref="ste:381700"/></registry_test>

Объект (Object)

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

Впримере ниже registry_object задан указателем наконкретное значение вреестре Windows: HKEY LOCAL MACHINE > Software\Policies\Micro > ACSettingIndex.

<registry_object id="obj:381700">  <hive datatype="string">HKEY_LOCAL_MACHINE</hive>  <key datatype="string">Software\Policies\Microsoft\Power\PowerSettings\0e796bdb-100d-47d6-a2d5-f7d2daa51f51</key>  <name datatype="string">ACSettingIndex</name></registry_object>

Состояние (State)

Этот компонент задает требуемое состояние объекта. Впримере ниже состояние неуказано непосредственно, алишь дана ссылка напеременную var:381700.

Каждый тип объекта обладает определенной спецификой, поэтому объекты, тесты исостояния должны быть одного типа. Например объект registry_object возможно сравнивать только ссостоянием registry_state спомощью теста registry_test.

<registry_state id="ste:381700">  <type>reg_dword</type>  <value datatype="int" var_ref="var:381700"/></registry_state>

Переменная (Variable)

Переменная хранит какое-то значение. Значение может быть задано статически или определяться динамически экспортируемыми значениями издокумента XCCDF.

Впримере ниже экспортируемая издокумента XCCDF переменная имеет значение, равное единице.

<external_variable id="var:381700">  <possible_value hint="disabled">0</possible_value>  <possible_value hint="enabled">1</possible_value></external_variable>

Итог

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

Полезные материалы

  1. Спецификация SCAP

  2. Спецификация XCCDF

  3. Спецификация OVAL

  4. Полные тексты разобранных документов на сайте CIS

  5. Автоматизация аудита информационной безопасности или SCAP ликбез

P.S.

Все рассмотренные документы в сборе под катом.

Win7Audit_Benchmark-xccddf.xml
<Benchmark>  <title>Win7 Audit</title>  <description>The Windows 7 Security Technical Implementation Guide (STIG) is published as a tool to improve the security of Department of Defense (DoD) information systems.  The requirements were developed from DoD consensus, as well as the Windows 7 Security Guide and security templates published by Microsoft Corporation.</description>  <Profile id="MAC-3_Sensitive">    <title>III - Administrative Sensitive</title>    <description>ProfileDescription</description>    <select idref="V-15706" selected="true"/>  </Profile>  <Group id="V-15706">    <title>Power Mgmt  Password Wake When Plugged In</title>    <description>GroupDescription</description>    <Rule id="SV-25168r1_rule">      <title>Password is required on resume from sleep (plugged in).</title>      <description>This check verifies that the user is prompted for a password on resume from sleep (Plugged In)</description>      <fixtext>Configure the policy value for Computer Configuration - Administrative Templates > System > Power Management > Sleep Settings Require a Password When a Computer Wakes (Plugged In) to Enabled.</fixtext>      <check>        <check-export value-id="require_a_password_when_a_computer_wakes_plugged_var" export-name="var:381700"/>        <check-content-ref name="def:3817"/>      </check>    </Rule>  </Group>  <Value id="password-require" operator="equals">    <value>1</value>    <value selector="disabled">0</value>    <value selector="enabled">1</value>  </Value></Benchmark>
Win7Audit_Benchmark-oval.xml
<oval_definitions>  <definitions>    <definition id="def:3817" class="compliance">      <metadata>        <title>Require a Password when a Computer Wakes (Plugged)</title>        <affected family="windows">          <platform>Microsoft Windows 7</platform>        </affected>        <description>Require a Password when a Computer Wakes (Plugged)</description>      </metadata>      <criteria operator="AND">        <criterion test_ref="tst:381700"/>      </criteria>    </definition>  </definitions>  <tests>    <registry_test id="tst:381700" check_existence="at_least_one_exists" check="all">      <object object_ref="obj:381700"/>      <state state_ref="ste:381700"/>    </registry_test>  </tests>  <objects>    <registry_object id="obj:381700">      <hive datatype="string">HKEY_LOCAL_MACHINE</hive>      <key datatype="string">Software\Policies\Microsoft\Power\PowerSettings\0e796bdb-100d-47d6-a2d5-f7d2daa51f51</key>      <name datatype="string">ACSettingIndex</name>    </registry_object>  </objects>  <states>    <registry_state id="ste:381700">      <type>reg_dword</type>      <value datatype="int" var_ref="var:381700"/>    </registry_state>  </states>  <variables>    <external_variable id="var:381700">      <possible_value hint="disabled">0</possible_value>      <possible_value hint="enabled">1</possible_value>    </external_variable>  </variables></oval_definitions>
Источник: habr.com
К списку статей
Опубликовано: 03.02.2021 12:13:25
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Информационная безопасность

Тестирование it-систем

Xml

It-стандарты

Scap

Xccdf

Oval

Compliance management

Vulnarability management

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru