Определение простыми словами
CVE (Common Vulnerabilities and Exposures) — это словарь уязвимостей, который ведёт корпорация MITRE при поддержке US-CERT. Каждой подтверждённой публичной уязвимости присваивается номер формата CVE-YYYY-NNNNN. Этот номер становится единым идентификатором, по которому ищут бажу в Nessus, Qualys, OpenVAS, Trivy и любом другом сканере.
CVE сам по себе не оценивает серьёзность. Для приоритизации используют CVSS (оценка 0–10), CWE (классификация типа бага) и NVD (расширенная база с метаданными). Zero-day попадает в каталог уже после раскрытия и патча.
Сравнение баз уязвимостей
| База | Кто ведёт | Что добавляет к CVE | Формат ID |
|---|---|---|---|
| CVE | MITRE | Базовое описание, ссылки | CVE-2024-12345 |
| NVD | NIST | CVSS-вектор, CWE, CPE | тот же CVE |
| GHSA | GitHub | Привязка к npm/pip/maven пакетам | GHSA-xxxx-xxxx-xxxx |
| OSV | Машиночитаемый формат | OSV-2024-1234 | |
| BDU | ФСТЭК России | Российская сертификация | BDU:2024-12345 |
Кейсы использования
- Patch management: Ansible-плейбук читает список CVE из inventory и обновляет только реально уязвимые хосты.
- Compliance: PCI-DSS требует устранения CVE с CVSS ≥ 4.0 в течение 30 дней.
- Supply chain: Trivy сканит Docker-образ и отдаёт список CVE с разбивкой по слоям.
- SOC: SIEM коррелирует попытки эксплуатации (например, паттерн RCE) с CVE-номером и автоматически приоритизирует алерт.
- Negative-сценарий: команда отключила автообновления и пропустила CVE с CVSS 9.8 в OpenSSH — через две недели сервер взломали через публичный PoC.
Технические детали
# Скан установленных пакетов на CVE (Debian/Ubuntu)
apt install -y debsecan
debsecan --suite $(lsb_release -cs) --format detail
# Сканирование Docker-образа
trivy image --severity CRITICAL,HIGH nginx:latest
# Проверка CVE через NVD API
curl -s "https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2021-44228"
| jq '.vulnerabilities[0].cve.metrics.cvssMetricV31[0].cvssData.baseScore'
# Подписка на свежие CVE по продукту
curl -s "https://cve.circl.lu/api/search/nginx/nginx" | jq '.[].id' | head
# Cron: ежедневный отчёт по новым high/critical
0 7 * * * /usr/bin/trivy fs --severity HIGH,CRITICAL / | mail -s "CVE daily" admin@example.com
Для прода держите CVE-инвентарь отдельной артефакт-базой: связка SBOM (CycloneDX/SPDX) + сканер + ticketing. Так каждый новый CVE автоматически превращается в задачу с дедлайном по политике, а не теряется в почте.
🔥 Где это применяется
Частые вопросы
Чем CVE отличается от CVSS?
CVE — это идентификатор уязвимости (CVE-2024-12345). CVSS — численная оценка серьёзности от 0 до 10. У одного CVE одна оценка CVSS, по ней решают, как быстро патчить.
Кто присваивает CVE-номера?
MITRE и сеть аккредитованных CNA (CVE Numbering Authorities): GitHub, Red Hat, Cisco, Microsoft и сотни других. Любой ресёрчер может запросить CVE через CNA вендора или MITRE напрямую.
Все ли уязвимости получают CVE?
Нет. Внутренние баги, которые вендор фиксит без публичного раскрытия, и уязвимости в проприетарном корпоративном софте часто остаются без CVE-номера.