Когда пентестер находит уязвимость, ему нужно не просто показать её заказчику, а описать так, чтобы разработчик понял корневую причину, а менеджер — степень риска. Для этого существуют три взаимосвязанных стандарта: CVE, CWE и CVSS. Каждый отвечает на свой вопрос.
CVE (Common Vulnerabilities and Exposures) — это публичный реестр, в котором каждой раскрытой уязвимости присваивается уникальный номер формата
Номер CVE не говорит о том, насколько уязвимость опасна или почему она возникла. Это просто метка, по которой можно найти описание, патчи и связанные записи в базах данных (NVD, GitHub Advisory, вендорские бюллетени).
CWE (Common Weakness Enumeration) — это каталог типов слабостей в программном и аппаратном обеспечении. На текущий момент каталог содержит более 900 записей. Каждая запись описывает паттерн ошибки проектирования или реализации, который потенциально приводит к уязвимости.
Ключевое отличие от CVE: CWE не привязан к конкретному продукту или инциденту. Это абстракция — «что пошло не так в коде».
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 разделяет метрики на три группы:
Base Metrics — обязательные, не зависят от окружения:
Temporal Metrics — меняются со временем:
Environmental Metrics — зависят от конкретной инфраструктуры:
Результат записывается в виде компактной строки:
Эта строка однозначно определяет набор метрик и итоговую оценку 9.8 (Critical). Калькулятор на сайте FIRST позволяет ввести вектор и получить числовое значение.
Версия 4.0, опубликованная FIRST, расширяет модель: добавлены метрики, учитывающие автоматизацию эксплуатации, влияние на смежные системы (Supplemental metrics), и уточнены определения для более точной дифференциации в диапазоне 7.0–9.0. Калькулятор и спецификация доступны на сайте FIRST.
Типичный сценарий в отчёте пентестера:
Распространённая ошибка — ставить 10.0 для любой найденной уязвимости. Если для эксплуатации требуется аутентификация с высокими привилегиями (PR:H) и взаимодействие пользователя (UI:R), оценка будет значительно ниже. Всегда прогоняйте метрики через калькулятор, а не назначайте число «на глаз».
CWE — это класс слабости, а не конкретный инцидент. Запись «CWE-79: XSS на странице /search» некорректна без пояснения: какой тип XSS (reflected, stored, DOM-based), какой параметр затронут, какой контекст вывода. CWE задаёт категорию, детали пентестер описывает отдельно.
Base Score одинаков для всех. Но если уязвимость с CVSS 9.8 находится в изолированном сегменте без доступа из интернета и без чувствительных данных, реальный риск для организации может быть значительно ниже. Environmental Metrics позволяют это отразить.
CVE — это конкретная запись об уязвимости в конкретном продукте. CWE — это тип ошибки. Одна CVE может быть связана с несколькими CWE, и один CWE может порождать тысячи CVE в разных продуктах.
Возьмём гипотетическую запись:
Читаем по шагам:
Итог: критическая уязвимость, патч приоритетен.
Для отработки навыков в безопасной среде можно развернуть собственную лабораторию на Kali Linux со специально уязвимыми приложениями Домашняя лаборатория для пентеста: как безопасно учиться на Kali Linux и специально уязвимых приложениях.
| Стандарт | Вопрос, на который отвечает | Пример |
|---|---|---|
| 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
- Проверка известных уязвимостей. При сканировании инфраструктуры или веб-приложения сканеры (Nessus, OpenVAS, Nuclei) выводят CVE-идентификаторы. Задача пентестера — убедиться, что уязвимость действительно эксплуатируема в данном окружении, а не просто числится в базе.
- Привязка к отчёту. Если найденная проблема совпадает с известным CVE, в отчёте указывают этот идентификатор — заказчик сразу видит контекст и ссылки на патч.
- Запрос нового CVE. Если найдена ранее неизвестная уязвимость в публичном продукте, пентестер (или исследователь) может запросить присвоение CVE через CNA (CVE Numbering Authority). Для этого нужно предоставить воспроизводимое доказательство и согласовать раскрытие с вендором.
CWE: классификация корневых причин
CWE (Common Weakness Enumeration) — это каталог типов слабостей в программном и аппаратном обеспечении. На текущий момент каталог содержит более 900 записей. Каждая запись описывает паттерн ошибки проектирования или реализации, который потенциально приводит к уязвимости.
Ключевое отличие от CVE: CWE не привязан к конкретному продукту или инциденту. Это абстракция — «что пошло не так в коде».
Примеры часто встречающихся CWE
| CWE ID | Название | Типичный сценарий |
|---|---|---|
| CWE-79 | Cross-site Scripting (XSS) | Непроверенный пользовательский ввод отражается в HTML |
| CWE-89 | SQL Injection | Конкатенация пользовательских данных в SQL-запрос |
| CWE-502 | Deserialization of Untrusted Data | Десериализация данных из внешнего источника без валидации |
| CWE-22 | Path Traversal | Использование ../ для выхода за пределы разрешённой директории |
| CWE-287 | Improper Authentication | Обход механизма аутентификации |
| CWE-787 | Out-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.0 | None |
| 0.1 – 3.9 | Low |
| 4.0 – 6.9 | Medium |
| 7.0 – 8.9 | High |
| 9.0 – 10.0 | Critical |
CVSS v4.0: что изменилось
Версия 4.0, опубликованная FIRST, расширяет модель: добавлены метрики, учитывающие автоматизацию эксплуатации, влияние на смежные системы (Supplemental metrics), и уточнены определения для более точной дифференциации в диапазоне 7.0–9.0. Калькулятор и спецификация доступны на сайте FIRST.
Как три стандарта работают вместе
Типичный сценарий в отчёте пентестера:
- Обнаружена уязвимость в веб-приложении: пользовательский ввод из параметра
idподставляется в SQL-запрос без параметризации.
- Пентестер классифицирует корневую причину как CWE-89 (SQL Injection).
- Если уязвимость затрагивает известный компонент (например, конкретную версию CMS), проверяется наличие CVE в NVD.
- Рассчитывается CVSS Base Score с учётом вектора атаки, необходимых привилегий и влияния на конфиденциальность/целостность/доступность.
- В отчёте указываются все три элемента: 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 - Home | NVD: 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 и специально уязвимых приложениях.
