«CVSS 10.0» и «RCE с CVSS 9.8» встречаются почти в каждом заголовке об уязвимости. Эти числа не выдуманы: они берутся из определённого набора метрик и формулы. Разберём, как их читать, с нуля.
Ориентир по оценкам
| Оценка | Ранг | Ощущение |
|---|---|---|
| 9.0 – 10.0 | Critical | Действуйте сейчас; часто класс захвата |
| 7.0 – 8.9 | High | Займитесь скоро |
| 4.0 – 6.9 | Medium | Запланируйте |
| 0.1 – 3.9 | Low | Держите на контроле |
Если CVE — это имя уязвимости, то CVSS — её оценка серьёзности. «RCE с CVSS 10.0» означает удалённое выполнение кода высшего ранга — худший класс (RCE).
Шкала оценки CVSS
Оценка CVSS строится из трёх групп метрик. То, что публикуется как «CVE-XXXX равна 9.8», почти всегда — оценка Base.
Base
Сама уязвимость. Публикуемое значение.
Threat
Корректируется со временем по доступности эксплойта.
Environmental
Пересчитывается под вашу конфигурацию и приоритеты.
① Эксплуатируемость
② Воздействие
Оценка Base — это, грубо, «① насколько легко эксплуатировать» × «② насколько велико воздействие». Следующие две таблицы — это и есть те метрики.
① Эксплуатируемость (насколько легко атаковать)
| Метрика | Значения | Наихудший случай (повышает оценку) |
|---|---|---|
| Attack Vector (AV) | Network / Adjacent / Local / Physical | Network (через интернет) — самое опасное |
| Attack Complexity (AC) | Low / High | Low (без особых условий) — опасно |
| Privileges Required (PR) | None / Low / High | None (вход не нужен) — опасно |
| User Interaction (UI) | None / Required | None (жертва ничего не делает) — опасно |
② Воздействие (что произойдёт при успехе)
CIA = три столпа безопасности: Confidentiality (конфиденциальность), Integrity (целостность), Availability (доступность).
| Метрика | Значения | «High» означает |
|---|---|---|
| Scope (S) | Unchanged / Changed | Changed = взлом выходит за исходную границу привилегий |
| Confidentiality (C) | High / Low / None | данные можно прочитать целиком |
| Integrity (I) | High / Low / None | данные можно свободно изменять |
| Availability (A) | High / Low / None | сервис можно полностью остановить |
«Scope: Changed» — вот что толкает оценку вверх
Например, ущерб, ограниченный внутри контейнера (Unchanged), против распространения оттуда на хост или другие сервисы (Changed). То, выходит ли ущерб за эту границу, сильно сдвигает оценку при в остальном одинаковых условиях.
Векторная строка: разбор оценки в одну строку
Каждая оценка CVSS сопровождается векторной строкой — записью того, какие метрики были выбраны, то есть обоснованием числа.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H → 10.0 (Critical)В разборе всё установлено на «самое опасное»:
| Сегмент | Значение | В этом примере |
|---|---|---|
AV:N | Attack Vector = Network | достаётся через интернет |
AC:L | Attack Complexity = Low | легко осуществить |
PR:N | Privileges Required = None | без аутентификации |
UI:N | User Interaction = None | без действий жертвы |
S:C | Scope = Changed | выходит за границу |
C:H / I:H / A:H | CIA = всё High | прочитано, изменено и остановлено |
Что отличает 10.0 от 9.8
Сделайте Scope «Unchanged» (S:U) в том примере — и те же условия дают 9.8. Именно то, выходит ли это за границу (S:C), достигает максимума 10.0. Так что 9.8 против 10.0 = «оба худшего класса, но ущерб распространяется на одну ступень дальше».
v3.1 против v4.0: обе сейчас в обороте
Текущая версия — v4.0 (2023), но большинство CVE всё ещё оценивается по v3.1 (2019), поэтому пока эти две сосуществуют.
| CVSS v3.1 | CVSS v4.0 | |
|---|---|---|
| Выпуск | 2019 | 2023 |
| Обозначение | оценка + вектор | CVSS-B / BT / BE / BTE, назначение явно |
| User Interaction | None / Required (2) | None / Passive / Active (3) |
| Scope | Scope(S), одна метрика | разделяет воздействие на «уязвимую систему» и «последующую систему» |
| Дополнительно | нет | добавляет вспомогательные метрики (автоматизируемость, восстановление, безопасность…) |
Примеры: реальные оценки известных уязвимостей
Ниже — фактические оценки из NVD. Они показывают, что число не всегда совпадает с реальным ущербом и что оценка может меняться в зависимости от оценщика и версии CVSS.
| Уязвимость | CVSS v3.1 | Важное в векторе | Что это показывает |
|---|---|---|---|
| Log4Shell (CVE-2021-44228) | 10.0 Critical | все метрики на худшем значении, S:C | Хрестоматийная 10.0 в широко используемом компоненте |
| Apache Struts (CVE-2017-5638) | 9.8 Critical | S:U (область не меняется) | По старой v2 было 10.0 — версия меняет число |
| Уязвимость VPN-устройства (CVE-2018-13379) | NVD 9.8 / вендор продукта 9.1 | оценщики по-разному оценивают целостность I | Одна CVE, разные оценки в разных источниках; сообщалось, что именно она стала точкой входа в инциденте в больнице Ханда |
| Heartbleed (CVE-2014-0160) | 7.5 High | только конфиденциальность C:H, без изменения данных и остановки | Не Critical, но стал крупным инцидентом с риском утечки закрытых ключей |
Все четыре входят в каталог эксплуатируемых уязвимостей (KEV) американского агентства CISA. Heartbleed с оценкой 7.5 тоже эксплуатировали — поэтому одна оценка не может сказать вам, что с исправлением можно подождать.
Что проверять помимо оценки
Шкала делает CVSS мощным. Но оценка — это теоретическое значение для наихудшего случая. На практике умножайте её на два фактора.
Проверьте, эксплуатируется ли она (KEV)
Уязвимости, наблюдаемые под реальной атакой (KEV — Known Exploited Vulnerabilities), — высший приоритет независимо от оценки. «Атакуют прямо сейчас» перевешивает теоретическое число.
Проверьте, используете ли вы затронутую функцию
CVSS 10.0 имеет малое реальное воздействие, если вы не используете компонент; средняя оценка — высший приоритет, если вы попадаете на неё в продакшене. Судите по реально работающей версии.
Опубликованная CVSS 10.0, которую отмахнули как «не моя проблема», привела к инциденту с мошенническими списаниями. Оценка — никогда не повод откладывать исправление. → Запущенная CVSS 10.0
Как проверить свою настройку
Найдите CVE и оценки для того, что у вас работает
Смотрите бюллетени безопасности вендора, NVD или JVN. Если у вас есть идентификатор CVE, «Поиск CVE / KEV» на этом сайте покажет CVSS, EPSS и KEV в одном месте.
Прочитайте вектор и спросите, относится ли он к вам
Даже при AV:N (через сеть) риск ниже, если функция не открыта в интернет. При PR:L (нужен вход) проверьте, кто вообще может войти. Вставьте вектор в калькулятор CVSS и разбор вектора, чтобы увидеть смысл каждой части.
Поручите сопоставление зависимостей машине
Для своего веб-приложения просканируйте lock-файл сканером уязвимостей зависимостей или Dependabot — получите список подходящих CVE и их оценок. Это надёжнее, чем отслеживать всё вручную.
Источники (первичные)
- FIRST, «CVSS v3.1 Specification Document» — first.org (метрики и уровни серьёзности)
- FIRST, «CVSS v4.0 Specification Document» — first.org
- NIST NVD, «CVE-2014-0160» — nvd.nist.gov (оценки и векторы CVE-2021-44228, CVE-2017-5638 и CVE-2018-13379 проверены так же, на их страницах в NVD)
- CISA, «Known Exploited Vulnerabilities Catalog» — cisa.gov
- FIRST, «Exploit Prediction Scoring System (EPSS)» — first.org
Читать дальше
- Решение: Какую CVE закрывать первой — CVSS, EPSS и KEV
- Инструмент: Калькулятор CVSS и разбор вектора (вставьте вектор — увидите оценку и смысл каждой метрики)
- Глоссарий: Что такое CVE · Что такое RCE
- Защита: Встройте CVE/CVSS в свой рабочий процесс