CVE, CWE и CVSS простыми словами: как пентестеру описывать уязвимость и её серьёзность

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

СтандартВопрос, на который отвечаетПример
CVEКакая конкретно уязвимость найдена?CVE-2021-44228
CWEКакой класс слабости в коде/дизайне к ней привёл?CWE-502 (Deserialization of Untrusted Data)
CVSSНасколько она опасна в числовом выражении?10.0 (Critical)

CVE: идентификатор конкретной уязвимости​


CVE (Common Vulnerabilities and Exposures) — это публичный реестр, в котором каждой раскрытой уязвимости присваивается уникальный номер формата CVE-ГГГГ-ПОРЯДКОВЫЙ_НОМЕР. Реестр ведёт корпорация MITRE при финансировании CISA (Cybersecurity and Infrastructure Security Agency, США).

Номер CVE не говорит о том, насколько уязвимость опасна или почему она возникла. Это просто метка, по которой можно найти описание, патчи и связанные записи в базах данных (NVD, GitHub Advisory, вендорские бюллетени).

Как пентестеру работать с CVE​


  1. Проверка известных уязвимостей. При сканировании инфраструктуры или веб-приложения сканеры (Nessus, OpenVAS, Nuclei) выводят CVE-идентификаторы. Задача пентестера — убедиться, что уязвимость действительно эксплуатируема в данном окружении, а не просто числится в базе.
  2. Привязка к отчёту. Если найденная проблема совпадает с известным CVE, в отчёте указывают этот идентификатор — заказчик сразу видит контекст и ссылки на патч.
  3. Запрос нового CVE. Если найдена ранее неизвестная уязвимость в публичном продукте, пентестер (или исследователь) может запросить присвоение CVE через CNA (CVE Numbering Authority). Для этого нужно предоставить воспроизводимое доказательство и согласовать раскрытие с вендором.

CWE: классификация корневых причин​


CWE (Common Weakness Enumeration) — это каталог типов слабостей в программном и аппаратном обеспечении. На текущий момент каталог содержит более 900 записей. Каждая запись описывает паттерн ошибки проектирования или реализации, который потенциально приводит к уязвимости.

Ключевое отличие от CVE: CWE не привязан к конкретному продукту или инциденту. Это абстракция — «что пошло не так в коде».

Примеры часто встречающихся CWE​


CWE IDНазваниеТипичный сценарий
CWE-79Cross-site Scripting (XSS)Непроверенный пользовательский ввод отражается в HTML
CWE-89SQL InjectionКонкатенация пользовательских данных в SQL-запрос
CWE-502Deserialization of Untrusted DataДесериализация данных из внешнего источника без валидации
CWE-22Path TraversalИспользование ../ для выхода за пределы разрешённой директории
CWE-287Improper AuthenticationОбход механизма аутентификации
CWE-787Out-of-bounds WriteЗапись за пределы выделенного буфера

Зачем CWE пентестеру​


  • Точность формулировки. Вместо размытого «инъекция» пентестер указывает CWE-89, и разработчик сразу понимает, что нужно параметризовать запросы.
  • Связь с CVE. В записях NVD каждая уязвимость привязана к одному или нескольким CWE. Это позволяет группировать проблемы по классу и отслеживать системные слабости в кодовой базе.
  • Приоритизация на уровне архитектуры. Если в проекте повторяется один и тот же CWE, проблема не в отдельном баге, а в отсутствии защитного механизма (например, нет централизованной валидации ввода).

CVSS: числовая оценка серьёзности​


CVSS (Common Vulnerability Scoring System) — это методика расчёта оценки уязвимости по шкале от 0.0 до 10.0. Стандарт поддерживается FIRST.org (Forum of Incident Response and Security Teams). Актуальная версия — CVSS v4.0; предыдущие версии (3.1, 3.0, 2.0) остаются в архивном доступе.

Структура оценки в CVSS v3.1​


CVSS v3.1 разделяет метрики на три группы:

Base Metrics — обязательные, не зависят от окружения:

  • Attack Vector (AV): Network, Adjacent, Local, Physical
  • Attack Complexity (AC): Low, High
  • Privileges Required (PR): None, Low, High
  • User Interaction (UI): None, Required
  • Scope (S): Unchanged, Changed
  • Confidentiality Impact (C): None, Low, High
  • Integrity Impact (I): None, Low, High
  • Availability Impact (A): None, Low, High

Temporal Metrics — меняются со временем:

  • Exploit Code Maturity (E)
  • Remediation Level (RL)
  • Report Confidence (RC)

Environmental Metrics — зависят от конкретной инфраструктуры:

  • Модификаторы Confidentiality, Integrity, Availability
  • Collateral Impact

Векторная строка​


Результат записывается в виде компактной строки:

Код:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Эта строка однозначно определяет набор метрик и итоговую оценку 9.8 (Critical). Калькулятор на сайте FIRST позволяет ввести вектор и получить числовое значение.

Диапазоны серьёзности​


ОценкаУровень
0.0None
0.1 – 3.9Low
4.0 – 6.9Medium
7.0 – 8.9High
9.0 – 10.0Critical

CVSS v4.0: что изменилось​


Версия 4.0, опубликованная FIRST, расширяет модель: добавлены метрики, учитывающие автоматизацию эксплуатации, влияние на смежные системы (Supplemental metrics), и уточнены определения для более точной дифференциации в диапазоне 7.0–9.0. Калькулятор и спецификация доступны на сайте FIRST.

Как три стандарта работают вместе​


Типичный сценарий в отчёте пентестера:

  1. Обнаружена уязвимость в веб-приложении: пользовательский ввод из параметра id подставляется в SQL-запрос без параметризации.
  2. Пентестер классифицирует корневую причину как CWE-89 (SQL Injection).
  3. Если уязвимость затрагивает известный компонент (например, конкретную версию CMS), проверяется наличие CVE в NVD.
  4. Рассчитывается CVSS Base Score с учётом вектора атаки, необходимых привилегий и влияния на конфиденциальность/целостность/доступность.
  5. В отчёте указываются все три элемента: CWE для разработчика, CVE для команды эксплуатации, CVSS для менеджмента.

Типичные ошибки начинающих пентестеров​


Завышение CVSS без обоснования​


Распространённая ошибка — ставить 10.0 для любой найденной уязвимости. Если для эксплуатации требуется аутентификация с высокими привилегиями (PR:H) и взаимодействие пользователя (UI:R), оценка будет значительно ниже. Всегда прогоняйте метрики через калькулятор, а не назначайте число «на глаз».

Подмена CWE описанием уязвимости​


CWE — это класс слабости, а не конкретный инцидент. Запись «CWE-79: XSS на странице /search» некорректна без пояснения: какой тип XSS (reflected, stored, DOM-based), какой параметр затронут, какой контекст вывода. CWE задаёт категорию, детали пентестер описывает отдельно.

Игнорирование Environmental Metrics​


Base Score одинаков для всех. Но если уязвимость с CVSS 9.8 находится в изолированном сегменте без доступа из интернета и без чувствительных данных, реальный риск для организации может быть значительно ниже. Environmental Metrics позволяют это отразить.

Путаница между CVE и CWE​


CVE — это конкретная запись об уязвимости в конкретном продукте. CWE — это тип ошибки. Одна CVE может быть связана с несколькими CWE, и один CWE может порождать тысячи CVE в разных продуктах.

Практический пример: разбор записи из NVD​


Возьмём гипотетическую запись:

Код:
CVE-2024-XXXXX
Описание: Неаутентифицированный удалённый злоумышленник может выполнить произвольный код через десериализацию в компоненте X.
CWE-502
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H → 9.8 Critical

Читаем по шагам:

  • AV:N — атака по сети, физический доступ не нужен.
  • AC:L — сложность низкая, не требуется гонка состояний или специфическая конфигурация.
  • PR:N — привилегии не нужны.
  • UI:N — взаимодействие пользователя не требуется.
  • S:U — scope не меняется, уязвимый компонент и затронутый компонент совпадают.
  • C:H, I:H, A:H — полное нарушение конфиденциальности, целостности и доступности.

Итог: критическая уязвимость, патч приоритетен.

Где искать информацию​


РесурсЧто содержит
CVE - CVEПоиск по CVE-идентификаторам
NVD - HomeNVD: CVE + CWE-привязка + CVSS-оценки
CWE - Common Weakness EnumerationПолный каталог CWE с описаниями и примерами
Common Vulnerability Scoring System Version 4.0 CalculatorКалькулятор CVSS v4.0
Common Vulnerability Scoring System Version 3.1 CalculatorКалькулятор CVSS v3.1

Чек-лист для отчёта пентестера​


  • Указан CWE-идентификатор корневой причины.
  • Если уязвимость известна — приведён CVE и ссылка на бюллетень вендора.
  • Рассчитан CVSS Base Score с указанием векторной строки.
  • При необходимости добавлены Environmental Metrics с пояснением, почему риск в данном окружении выше или ниже базового.
  • Описание содержит конкретный параметр, эндпоинт или компонент, а не только абстрактную категорию.
  • Рекомендация по исправлению привязана к CWE (например, для CWE-89 — параметризованные запросы, для CWE-79 — контекстное экранирование вывода).

Для отработки навыков в безопасной среде можно развернуть собственную лабораторию на Kali Linux со специально уязвимыми приложениями Домашняя лаборатория для пентеста: как безопасно учиться на Kali Linux и специально уязвимых приложениях.

Источники​


 
Назад
Верх Низ