Вопрос или проблема
Возможно ли фильтровать уязвимости CVE по затронутой платформе/ОС?
Некоторые источники предоставляют такую возможность, например, exploit-db, но основной источник информации о уязвимостях NVD, Национальная база данных уязвимостей, похоже, не имеет такой категории или фильтра ни для CVE, ни для CPE. Ожидалось ли это или я что-то упускаю?
Если это невозможно или ненадежно, как я могу узнать, затронут ли продукт уязвимостью на конкретной платформе? Должен ли я просто предположить, что все они затронуты?
Кратко говоря, технически да, это возможно, используя некоторые поля CPE. Но на практике это очень редко срабатывает.
Вы используете CPE для запросов в NVD (т.е. не для поиска по свободному тексту). Посмотрите здесь краткое введение в CPE:
https://en.wikipedia.org/wiki/Common_Platform_Enumeration#Scheme_Format
Мы видим, что доступны поля <sw_edition> и <target_sw>. Эти поля предназначены для вашего случая использования.
Что касается вашего примера с Acrobat Reader, эти CPE существуют в NVD и используют такие поля:
cpe:2.3:a:adobe:acrobat_reader:*:*:*:*:*:android:*:*
cpe:2.3:a:adobe:acrobat_reader:*:*:for_mac_os_x:*:*:*:*:*
cpe:2.3:a:adobe:acrobat_reader:11.0.5:-:*:*:*:windows:*:*
cpe:2.3:a:adobe:acrobat_reader:3.0:*:mac_os_x:*:*:*:*:*
cpe:2.3:a:adobe:acrobat_reader:4.0:*:for_mac_os_x:*:*:*:*:*
cpe:2.3:a:adobe:acrobat_reader:5.0.9:*:unix:*:*:*:*:*
cpe:2.3:a:adobe:acrobat_reader:8.1:*:windows:*:*:*:*:*
и т.д. Но есть две проблемы:
- Эти поля <sw_edition> и <target_sw> редко используются. Может быть, есть 12-15 случаев их использования для более чем 200 существующих CPE для Acrobat Reader.
- Не существует канонической формы для этих полей. В приведенном выше примере мы видим как “for_mac_os_x”, так и “mac_os_x”, в зависимости от настроения репортера или аналитика NVD.
Кратко говоря, CPE одновременно и переусложнены, и недостаточно используются. Что касается меня, я просто использую первое поле cpe:<cpe_version>::::, все остальное — более-менее хаос. Я также веду полный список из более чем 350,000 существующих CPE для быстрого поиска с помощью grep.
В NVD вы можете искать по CPE здесь:
https://nvd.nist.gov/products/cpe/search
Используя один из примеров CPE выше cpe:2.3:a:adobe:acrobat_reader:11.0.5:-:*:*:*:windows:*:*
, вы перейдете по следующей ссылке:
https://nvd.nist.gov/products/cpe/search/results?namingFormat=2.3&keyword=cpe%3A2.3%3Aa%3Aadobe%3Aacrobat_reader%3A11.0.5%3A-%3A*%3A*%3A*%3Awindows%3A*%3A*
…что приведет вас к:
https://nvd.nist.gov/vuln/search/results?form_type=Advanced&results_type=overview&isCpeNameSearch=true&seach_type=all&query=cpe:2.3:a:adobe:acrobat_reader:11.0.5:-::::windows::*
А затем, удачи с этим.
Но, например, в полученном списке CVE эта уязвимость содержит информацию о платформе/ОС (прокрутите вниз, посмотрите на “Работает на/с”):
https://nvd.nist.gov/vuln/detail/CVE-2017-11307
Сопоставление CPE — это очень сложная тема. Для получения дополнительной информации, смотрите “Известные затронутые конфигурации программного обеспечения” здесь: https://nvd.nist.gov/vuln/vulnerability-detail-pages
Полные спецификации CPE — их несколько, это на самом деле стек — доступны здесь: https://csrc.nist.gov/projects/security-content-automation-protocol/specifications/cpe
Ответ или решение
К сожалению, фильтрация уязвимостей (CVE) по затронутым платформам или операционным системам (ОС) является сложной задачей. В Национальной базе уязвимостей (NVD) действительно нет четкой категории или фильтра для CVE или CPE, что может вызывать недоумение.
Тем не менее, технически это возможно с использованием полей CPE. CPE (Common Platform Enumeration) предоставляет информацию о программном обеспечении и его версиях, что позволяет проводить более точные запросы к базе. В CPE есть замечания для
cpe:2.3:a:adobe:acrobat_reader:*:*:*:*:*:android:*:*
cpe:2.3:a:adobe:acrobat_reader:*:*:for_mac_os_x:*:*:*:*:*
cpe:2.3:a:adobe:acrobat_reader:11.0.5:-:*:*:*:windows:*:*
Однако на практике есть несколько проблем:
-
Редкое использование полей: Поля
и редко заполняются, например, для Acrobat Reader существует только 12-15 таких записей среди более чем 200 CPE. -
Отсутствие канонической формы: Одна и та же ОС может быть упомянута по-разному, например, "for_mac_os_x" и "mac_os_x", что приводит к неразберихе в данных.
Таким образом, хотя CPE и предоставляют способ поиска уязвимостей, в действительности они являются как чрезмерно разработанными, так и недоиспользованными. Рекомендуется использовать только первую часть CPE: cpe:<cpe_version>:::
и игнорировать всё, что следует дальше, так как это может быть слишком хаотично.
Вы можете выполнять поиск CPE в NVD здесь. Например, поиском по следующему CPE вы получите представление о CVE, связанных с ним:
cpe:2.3:a:adobe:acrobat_reader:11.0.5:-:*:*:*:windows:*:*
Это приведет вас к списку уязвимостей, где, находя CVE, вы можете просмотреть информацию о затронутых платформах и ОС. Одна из таких уязвимостей — CVE-2017-11307, где внизу указана информация о платформах.
Однако стоит отметить, что знание конкретных уязвимостей для вашего программного обеспечения сложно и требует методов проверки и сопоставления информации. Обычно не стоит считать, что все программные версии подвержены уязвимости. Вам стоит ознакомиться с информацией о каждой конкретной версии программного обеспечения и явно указанных уязвимостях.
Если вам нужно больше информации о сопоставлении CPE, можно ознакомиться с "Известными конфигурациями программного обеспечения" на странице уязвимостей NVD и полными спецификациями CPE по этой ссылке.