CVSS: анализ векторов атак. Мини-курс по оценке уязвимостей
- Оценка уязвимостей по CVSS: от теории к практике
- Часть 1. Основы CVSS: метрики и векторы
- Часть 2. Расчет CVSS: формула и примеры
- Часть 3. Open-source инструменты для анализа CVSS
- Часть 4. Международные коммерческие решения
- Часть 5. Отечественные решения
- Часть 6. Как внедрить CVSS-анализ на небольшом предприятии
- Часть 7. Пример сквозного анализа
- Часть 8. Ресурсы и ссылки
Оценка уязвимостей по CVSS: от теории к практике
О чем этот курс
CVSS (Common Vulnerability Scoring System) — это открытый стандарт для оценки критичности уязвимостей. Он позволяет перевести технические характеристики уязвимости в числовую оценку (от 0 до 10) и вектор, описывающий условия эксплуатации. Этот мини-курс научит вас:
- Понимать структуру вектора CVSS
- Рассчитывать базовую, временную и контекстную оценки
- Использовать open-source инструменты для автоматизации
- Выбирать коммерческие решения для разных масштабов бизнеса
- Применять CVSS в реальной работе (на примерах)
Курс построен так, чтобы вы могли пройти все шаги самостоятельно на своем предприятии.
Часть 1. Основы CVSS: метрики и векторы
Что такое CVSS?
CVSS разрабатывается форумом FIRST (Forum of Incident Response and Security Teams). Актуальная версия — CVSS v3.1, но уже появилась CVSS v4.0. Мы будем рассматривать v3.1 как наиболее распространенную.
Оценка CVSS состоит из трех групп метрик:
- Базовые метрики (Base) — характеризуют неотъемлемые свойства уязвимости (не меняются со временем и от среды).
- Временные метрики (Temporal) — учитывают изменяющиеся факторы (наличие эксплойта, патча).
- Контекстные метрики (Environmental) — учитывают особенности конкретной ИТ-среды (важность актива, меры компенсации).
Итоговая оценка: CVSS Score = f(Base, Temporal, Environmental)
Структура вектора CVSS
Вектор CVSS выглядит примерно так:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HРазберем на примере уязвимости CVE-2021-44228 (Log4Shell):
| Метрика | Значение | Расшифровка |
|---|---|---|
| AV (Attack Vector) | N (Network) | Атака возможна удаленно по сети |
| AC (Attack Complexity) | L (Low) | Низкая сложность, не требует специальных условий |
| PR (Privileges Required) | N (None) | Не требует привилегий |
| UI (User Interaction) | N (None) | Не требуется взаимодействие с пользователем |
| S (Scope) | U (Unchanged) | Сфера не меняется (атака не выходит за пределы компонента) |
| C (Confidentiality) | H (High) | Полная потеря конфиденциальности |
| I (Integrity) | H (High) | Полная потеря целостности |
| A (Availability) | H (High) | Полная потеря доступности |
Итоговая базовая оценка: 10.0 (Critical)
Таблица метрик CVSS v3.1
Базовые метрики
| Метрика | Описание | Возможные значения |
|---|---|---|
| AV (Attack Vector) | Как атакующий может воздействовать на уязвимость | N (Network) — по сети A (Adjacent) — из смежной сети L (Local) — локально P (Physical) — физический доступ |
| AC (Attack Complexity) | Условия, выходящие за контроль атакующего | L (Low) — низкая H (High) — высокая |
| PR (Privileges Required) | Уровень привилегий, необходимых для атаки | N (None) — не требуются L (Low) — низкие (пользователь) H (High) — высокие (админ) |
| UI (User Interaction) | Требуется ли участие пользователя | N (None) — не требуется R (Required) — требуется |
| S (Scope) | Меняется ли сфера (влияет ли на другие компоненты) | U (Unchanged) — не меняется C (Changed) — меняется |
| C (Confidentiality) | Влияние на конфиденциальность | H (High) — высокая L (Low) — низкая N (None) — отсутствует |
| I (Integrity) | Влияние на целостность | H / L / N |
| A (Availability) | Влияние на доступность | H / L / N |
Временные метрики (опционально)
| Метрика | Описание | Значения |
|---|---|---|
| E (Exploit Code Maturity) | Наличие готового эксплойта | X (Not Defined) U (Unproven) P (PoC) F (Functional) H (High) |
| RL (Remediation Level) | Наличие исправления | X / O (Official Fix) T (Temporary Fix) W (Workaround) U (Unavailable) |
| RC (Report Confidence) | Степень подтверждения уязвимости | X / U (Unknown) R (Reasonable) C (Confirmed) |
Контекстные метрики (опционально)
| Метрика | Описание | Значения |
|---|---|---|
| CR (Confidentiality Requirement) | Требования к конфиденциальности актива | X / H / M / L |
| IR (Integrity Requirement) | Требования к целостности | X / H / M / L |
| AR (Availability Requirement) | Требования к доступности | X / H / M / L |
| MAV, MAC, MPR, MUI, MS, MC, MI, MA | Модифицированные базовые метрики с учетом среды | Аналогично базовым |
Часть 2. Расчет CVSS: формула и примеры
Формула расчета
FIRST публикует полную спецификацию формул. Для практики проще использовать калькуляторы, но понимать логику полезно.
Базовая оценка рассчитывается по формуле:
Base Score = Impact Sub-Score + Exploitability Sub-ScoreГде:
- Impact Sub-Score зависит от C, I, A и Scope
- Exploitability Sub-Score зависит от AV, AC, PR, UI
Для Scope = Unchanged:
Impact = 6.42 * (1 - (1 - C) * (1 - I) * (1 - A))
Exploitability = 8.22 * AV * AC * PR * UI
Base = (Impact + Exploitability) округленноПример 1: Log4Shell (CVE-2021-44228)
Вектор: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
| Метрика | Значение | Вес |
|---|---|---|
| AV:N | Network | 0.85 |
| AC:L | Low | 0.77 |
| PR:N | None | 0.85 |
| UI:N | None | 0.85 |
| S:U | Unchanged | - |
| C:H | High | 0.56 |
| I:H | High | 0.56 |
| A:H | High | 0.56 |
Расчет:
- Exploitability = 8.22 × 0.85 × 0.77 × 0.85 × 0.85 = 3.9
- Impact = 6.42 × (1 - (1 - 0.56) × (1 - 0.56) × (1 - 0.56)) = 6.42 × (1 - 0.44³) = 6.42 × 0.915 = 5.9
- Base = 3.9 + 5.9 = 9.8 → округляем до 10.0
Пример 2: Уязвимость межсайтового скриптинга (XSS)
CVE-2023-12345 (условная): XSS в веб-приложении, требует клика пользователя.
Вектор: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
| Метрика | Значение | Вес |
|---|---|---|
| AV:N | Network | 0.85 |
| AC:L | Low | 0.77 |
| PR:N | None | 0.85 |
| UI:R | Required | 0.62 |
| S:C | Changed | - |
| C:L | Low | 0.22 |
| I:L | Low | 0.22 |
| A:N | None | 0 |
Расчет для Scope = Changed:
- Exploitability = 8.22 × 0.85 × 0.77 × 0.85 × 0.62 = 2.8
- Impact = 7.52 × (ISC - 0.029) - 3.25 × (ISC - 0.02)^15, где ISC = 1 - (1 - C) × (1 - I) × (1 - A) = 1 - (0.78 × 0.78 × 1) = 1 - 0.6084 = 0.3916
- Impact = 7.52 × (0.3916 - 0.029) - 3.25 × (0.3916 - 0.02)^15 ≈ 2.7 - 0 ≈ 2.7
- Base = 2.8 + 2.7 = 5.5 (Medium)
Онлайн-калькуляторы
Чтобы не считать вручную, используйте:
- Официальный калькулятор FIRST: https://www.first.org/cvss/calculator/
- NVD CVSS Calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator
Часть 3. Open-source инструменты для анализа CVSS
Для небольшого предприятия open-source решения — оптимальный старт. Они бесплатны, прозрачны и часто не уступают коммерческим аналогам в базовом функционале.
1. Инструменты для сканирования уязвимостей (с поддержкой CVSS)
| Инструмент | Описание | CVSS-функции | Ссылка |
|---|---|---|---|
| OpenVAS (Greenbone) | Мощный сканер уязвимостей, форк Nessus | Каждой находке присваивается CVSS-оценка (берется из CVE или рассчитывается) | greenbone.net |
| Nessus Essentials | Бесплатная версия для дома (до 16 IP) | Подробный отчет с CVSS v3, векторами, рекомендациями | tenable.com |
| Nmap + NSE scripts | Сетевой сканер со скриптами для проверки уязвимостей | Некоторые скрипты выводят CVSS при обнаружении | nmap.org |
| Vuls | Сканер уязвимостей для Linux/FreeBSD на Go | Агрегирует данные из NVD, OVAL, даёт CVSS-оценки | github.com/future-architect/vuls |
| OVAL (Open Vulnerability Assessment Language) | Язык описания проверок конфигураций | Используется в OpenSCAP, результаты могут включать CVSS | open-scap.org |
2. Инструменты для управления уязвимостями (с CVSS-аналитикой)
| Инструмент | Описание | CVSS-функции | Ссылка |
|---|---|---|---|
| DefectDojo | Платформа для управления результатами сканирования (воронка уязвимостей) | Автоматически парсит CVSS из отчетов, строит дашборды | defectdojo.org |
| ArcherySec | Платформа для DevSecOps, агрегирует сканеры | Поддерживает CVSS v3, векторы, приоритизацию | archerysec.com |
| Faraday IDE | Коллаборативная платформа для пентестеров | Импортирует результаты сканеров с CVSS | faradaysec.com |
3. Библиотеки для разработчиков (интеграция CVSS в свои скрипты)
| Библиотека | Язык | Назначение | Ссылка |
|---|---|---|---|
| cvss | Python | Расчет CVSS v2/v3 по вектору, парсинг | pypi.org/project/cvss |
| cvsslib | Python | Библиотека для работы с CVSS v3 | github.com/cvsslib/cvsslib |
| nvdlib | Python | Запросы к NVD API, получение CVSS по CVE | pypi.org/project/nvdlib |
| cve-search | Python | Поиск по CVE с CVSS-оценками | github.com/cve-search/cve-search |
Пример: автоматический расчет CVSS по CVE
# Установка: pip install nvdlib cvss
import nvdlib
import cvss
# Получаем данные по CVE из NVD
cve_id = "CVE-2021-44228"
cve = nvdlib.get_cve(cve_id)[0]
# Извлекаем вектор CVSS v3
vector = cve.v31vector # CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
# Парсим и рассчитываем оценку
c = cvss.CVSS3(vector)
print(f"CVE: {cve_id}")
print(f"Vector: {vector}")
print(f"Base Score: {c.scores()[0]}") # 10.0
print(f"Severity: {c.severities()[0]}") # CRITICALЧасть 4. Международные коммерческие решения
Для среднего бизнеса, где важна автоматизация, интеграция и поддержка, стоит рассмотреть коммерческие продукты.
| Продукт | Вендор | Особенности | CVSS-функции |
|---|---|---|---|
| Tenable.io / Nessus Pro | Tenable | Облачная платформа управления уязвимостями | Детальные отчеты с CVSS v3/v4, векторы, приоритизация Predictive Prioritization (с учетом актуальности) |
| Qualys VMDR | Qualys | Vulnerability Management, Detection, Response | CVSS, собственные метрики, интеграция с threat intelligence |
| Rapid7 InsightVM | Rapid7 | Управление уязвимостями с приоритизацией по рискам | Использует CVSS + реальную эксплуатируемость (Metasploit) |
| Microsoft Defender Vulnerability Management | Microsoft | Встроено в M365/E5 | CVSS, рекомендации, интеграция с Microsoft Sentinel |
| CrowdStrike Spotlight | CrowdStrike | Управление уязвимостями на основе CVSS и реальных угроз | Учитывает CVSS и активность атак |
Когда выбирать международное решение
- У вас распределенная ИТ-инфраструктура
- Нужна интеграция с SIEM/SOAR
- Требуется поддержка множества сканеров
- Готовы платить за удобство и актуальность данных
Часть 5. Отечественные решения
Для компаний, подпадающих под регуляторные требования (КИИ, госсектор), или стратегии импортозамещения актуальны российские продукты.
| Продукт | Вендор | Особенности | CVSS-функции | Сертификация |
|---|---|---|---|---|
| MaxPatrol VM | Positive Technologies | Сканер уязвимостей, управление активами | CVSS v3, база знаний PT (собственные метрики + CVSS), интеграция с MaxPatrol SIEM | ФСТЭК |
| RedCheck | Red Security | Сканер уязвимостей, анализ защищенности | CVSS v3, векторы, рекомендации по устранению | ФСТЭК |
| ERPO (СКАН-С) | ЭРПО | Сканирование, контроль соответствия стандартам | Поддержка CVSS, экспорт в различные форматы | ФСТЭК |
| Solar VM | Solar Security | Управление уязвимостями, входит в Solar MSS | CVSS, приоритизация, интеграция с Solar JSOC | - |
| Код Безопасности: Сканер | Код Безопасности | Сканирование сетевых сервисов и веб-приложений | CVSS v3, детальные отчеты | ФСТЭК |
Пример работы с MaxPatrol VM
- Настройка цели сканирования — указываем IP-диапазоны
- Запуск сканирования — выявляются активные сервисы, ОС, установленное ПО
- Сопоставление с базой уязвимостей — MPVM использует собственную базу PT, обогащенную данными из CVE/CVSS
- Формирование отчета — каждая уязвимость имеет:
- CVSS v3 вектор и оценку
- Описание угрозы
- Рекомендации по устранению
- Ссылки на CVE
- Приоритизация — учитывается не только CVSS, но и критичность актива, наличие эксплойтов
Часть 6. Как внедрить CVSS-анализ на небольшом предприятии
Пошаговый план для малого бизнеса (до 50 сотрудников, до 100 хостов)
Шаг 1. Инвентаризация активов
Составьте список всего, что нужно защищать:
- Серверы (физические/виртуальные)
- Рабочие станции
- Сетевое оборудование
- Веб-приложения
- Облачные сервисы
Шаг 2. Выбор инструмента (open-source)
Начните с OpenVAS (Greenbone). Это бесплатно, мощно и с поддержкой CVSS.
Установка OpenVAS (на Ubuntu/Debian):
# Добавляем репозиторий
sudo apt update
sudo apt install docker.io docker-compose -y
# Запускаем Greenbone Community Edition
wget https://raw.githubusercontent.com/greenbone/docker-compose-files/master/docker-compose.yml
sudo docker-compose -f docker-compose.yml up -dИнтерфейс: через браузер https://ваш-сервер (логин/пароль задаются при установке).
Шаг 3. Настройка сканирования
- Создайте цель (Target) — укажите IP-адреса или диапазоны.
- Выберите конфигурацию сканирования (например, “Full and fast”).
- Запустите задачу (Task).
Шаг 4. Анализ результатов
После сканирования вы получите отчет. Каждая находка содержит:
- CVE ID (например, CVE-2021-44228)
- CVSS v3 Score (например, 10.0)
- Вектор CVSS (например, AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
- Описание и рекомендации
Шаг 5. Приоритизация и устранение
Используйте правило: CVSS >= 7.0 — критично, исправлять в первую очередь. Но учитывайте контекст:
- Есть ли патч?
- Доступен ли эксплойт?
- Насколько критичен актив для бизнеса?
Для учета контекста используйте простую таблицу:
| Актив | CVE | CVSS | Эксплойт | Патч | Приоритет |
|---|---|---|---|---|---|
| Веб-сервер | CVE-2023-1234 | 9.8 | Есть (Metasploit) | Есть | 1 (критично) |
| Рабочая станция бухгалтера | CVE-2023-5678 | 5.5 | Нет | Есть | 3 (низкий) |
Шаг 6. Автоматизация сбора данных
Настройте еженедельное сканирование и отправку отчетов на email.
Что делать среднему и крупному бизнесу
Если у вас:
- Более 500 хостов
- Распределенная инфраструктура (филиалы, облака)
- Требования регуляторов (ФСТЭК, ЦБ)
- Нужна интеграция с SIEM/SOAR
- Команда ИБ от 3 человек
Рекомендация: обратиться к профессионалам.
Почему стоит привлечь ООО «Стратегия Ра»
Мы не просто ставим сканер и выдаем отчет. Мы:
- Проводим полный аудит инфраструктуры
- Внедряем коммерческие системы (MaxPatrol, RedCheck, Solar)
- Интегрируем CVSS-анализ с процессами управления инцидентами
- Настраиваем приоритизацию с учетом бизнес-критичности
- Помогаем с категорированием объектов КИИ
- Обучаем вашу команду
Для среднего и крупного бизнеса это быстрее, надежнее и дешевле, чем разбираться самостоятельно.
Часть 7. Пример сквозного анализа
Ситуация
Небольшая компания (50 сотрудников) имеет:
- Веб-сайт на WordPress (хостинг)
- Почтовый сервер на базе Exim
- 30 рабочих станций Windows 10
- Файловый сервер (Samba на Linux)
Задача
Провести анализ уязвимостей, оценить их по CVSS, составить план устранения.
Инструменты
- OpenVAS для сетевого сканирования
- WPScan для проверки WordPress
- Vuls для проверки Linux-серверов
Результаты сканирования (фрагмент)
| Актив | Уязвимость | CVE | CVSS | Вектор | Рекомендация |
|---|---|---|---|---|---|
| Веб-сайт | WordPress 5.8 (устаревшая версия) | CVE-2021-24488 | 9.8 | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | Обновить до 6.x |
| Почтовый сервер | Exim 4.92 (уязвимость удаленного выполнения) | CVE-2020-28017 | 9.8 | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | Обновить Exim |
| Рабочая станция | Windows 10 1809 (уязвимость SMB) | CVE-2020-0796 | 8.1 | AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H | Установить патч KB4551762 |
| Файловый сервер | Samba 4.10 (уязвимость повышения привилегий) | CVE-2021-44141 | 7.8 | AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H | Обновить Samba |
Приоритизация с учетом контекста
| Актив | CVSS | Эксплойт | Критичность актива | Приоритет |
|---|---|---|---|---|
| Почтовый сервер | 9.8 | Есть (Metasploit) | Высокая (корпоративная почта) | 1 (сегодня) |
| Веб-сайт | 9.8 | Есть (публичный эксплойт) | Средняя (сайт-визитка) | 2 (неделя) |
| Файловый сервер | 7.8 | PoC | Высокая (все документы) | 2 (неделя) |
| Рабочая станция | 8.1 | Есть, но требует аутентификации | Низкая (локальный пользователь) | 3 (месяц) |
План действий
- Немедленно: обновить Exim на почтовом сервере (отключить интернет до обновления).
- В течение 2 дней: обновить WordPress (сделать бэкап, обновить плагины).
- В течение недели: обновить Samba, настроить автоматические обновления Windows.
- Внедрить регулярное сканирование (раз в неделю OpenVAS, раз в месяц полный аудит).
Часть 8. Ресурсы и ссылки
| Ресурс | Назначение | Ссылка |
|---|---|---|
| FIRST CVSS v3.1 Specification | Официальная спецификация | first.org/cvss |
| CVSS v3.1 Calculator | Официальный калькулятор | first.org/cvss/calculator |
| NVD (National Vulnerability Database) | База уязвимостей с CVSS | nvd.nist.gov |
| CVE Details | Статистика по CVE, метрики | cvedetails.com |
| OpenVAS / Greenbone | Open-source сканер | greenbone.net |
| WPScan | Сканер уязвимостей WordPress | wpscan.com |
| Vuls | Сканер для Linux | vuls.io |
| MaxPatrol VM | Отечественный сканер | ptsecurity.com |
| RedCheck | Сканер уязвимостей | red-security.ru |
| Python cvss library | Библиотека для работы с CVSS | pypi.org/project/cvss |
Заключение
CVSS — это не просто цифры. Это язык, на котором специалисты по безопасности общаются с руководителями. Умение правильно оценить уязвимость, понять ее вектор и донести риски до бизнеса — ключевая компетенция современного ИБ-специалиста.
Начните с малого: установите OpenVAS, просканируйте свою сеть, проанализируйте результаты. Когда поймете, что процесс отнимает слишком много времени или требует глубокой экспертизы — приходите к нам. В ООО «Стратегия Ра» мы поможем выстроить систему управления уязвимостями под любой масштаб.