02.03.2012

Введение в CPE: Common platform enumeration

image

Одна из проблем, стоящих перед создателями продуктов compliance-management, это процесс сопоставления результатов инвентаризации системы и данных уязвимостей.

Доброго времени суток, коллеги!

Одна из проблем, стоящих перед создателями продуктов compliance-management, это процесс сопоставления результатов инвентаризации системы и данных уязвимостей. Она основывается на том, что при формальном документировании уязвимости в базе данных (к примеру, в NVD) применимость уязвимости описывается формальным языком CPE. Он представляет собой способ описания всех возможных продуктов, операционных систем и аппаратных устройств.

Задуманный как универсальный формат он так и остался утопией MITRE. Он заложен в «основу основ» формализованного хранения информации в информационной безопасности, — в способ подачи информации об уязвимостях CVE. Базой языка является словарь, являющийся по сути справочником, позволяющим узнать соответствие между сокращениями стандартного вида и их дополнительной информацией. Давайте посмотрим, как же устроены сокращения СРЕ:

image

Как видно из схемы, кодовая строка СРЕ разбита на логические разделы через символ ":". Количество полей определяется желаемой степенью аппроксимации, при необходимости заменяя ненужные поля на пустую строку. Таким образом для максимальной детализации необходимо указывать значения всех полей, а для обобщения выборки необходимо делать пропуски в желаемых местах. С правилами составления данных конструкций можно детально ознакомиться в спецификации.

Имея такую ссылку можно обратиться к словарю и получить XML блок данных об продукте. Рассмотрим его на примере cpe:/o:sun:sunos:5.9:

<cpe-item name="cpe:/o:sun:sunos:5.9">
<title xml:lang="en-US">Sun SunOS (formerly Solaris 9) 5.9</title>
<check href="oval.mitre.org/repository/data/DownloadDefinition?id=oval:org.mitre.oval:def:2174" system="oval.mitre.org/XMLSchema/oval-definitions-5">oval:org.mitre.oval:def:2174</check>
<meta:item-metadata modification-date="2011-01-19T19:36:00.913Z" status="DRAFT" nvd-id="122557" />
</cpe-item>

Как видно, предоставляется информация о самом продукте, его уникальный идентификатор nvd-id и блок «check». Наиболее интересным является именно блок проверки, так как в нем указывается ссылка на формализованную проверку на языке OVAL про который я уже писал ранее. Данная ссылка позволяет однозначно идентифицировать систему, используя заданные критерии в дефинишене. К сожалению, данные ссылки на способ инвентаризации продукта в системе на данный момент являются редкостью для CPE.

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

<cpe-lang:logical-test negate="false" operator="OR">
<cpe-lang:fact-ref name="cpe:/a:ibm:db2:9.0" />
<cpe-lang:fact-ref name="cpe:/a:ibm:db2_universal_database:6.0" />
<cpe-lang:fact-ref name="cpe:/a:ibm:db2_universal_database:7.0::linux" />
<cpe-lang:fact-ref name="cpe:/a:ibm:db2_universal_database:7.1::linux" />
<cpe-lang:fact-ref name="cpe:/a:ibm:db2_universal_database:7.2::linux" />
<cpe-lang:fact-ref name="cpe:/a:ibm:db2_universal_database:8.0::linux" />
<cpe-lang:fact-ref name="cpe:/a:ibm:db2_universal_database:8.1::aix" />
<cpe-lang:fact-ref name="cpe:/a:ibm:db2_universal_database:8.2::windows" />
</cpe-lang:logical-test>
Как видно из контекста, данные строки описывают условие «OR» для группы продуктов. Таким образом, условие будет положительным при наличии любого из данных продуктов. В комплексе, данные средства позволяют определить «применимость» гарантированно точным образом.

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



или введите имя

CAPTCHA