# Обнаружение уязвимостей в Wazuh 4.14

> Модуль vulnerability detection в Wazuh - сканирование CVE, конфигурация syscollector, провайдеры фидов NVD и CISA KEV, управление ложными срабатываниями

Source: https://opennix.org/docs/wazuh/capabilities/wazuh-vulnerability-detection/


Модуль обнаружения уязвимостей в Wazuh выявляет известные CVE (Common Vulnerabilities and Exposures) в программном обеспечении, установленном на контролируемых системах. Модуль работает в два этапа: компонент syscollector на агенте собирает инвентаризацию установленных пакетов, а модуль vulnerability-detector на сервере сопоставляет эти данные с базами уязвимостей.

## Принцип работы

Обнаружение уязвимостей в Wazuh основано на корреляции двух источников данных:

1. **Инвентаризация ПО (Syscollector)** - агент собирает список установленных пакетов, их версии и архитектуру
2. **Базы уязвимостей** - сервер загружает и обновляет фиды из NVD, CISA KEV и вендор-специфичных источников
3. **Корреляция** - сервер сопоставляет версии установленных пакетов с записями CPE/CVE и генерирует алерты

```
Агент (syscollector) -> Инвентаризация пакетов ->
-> Сервер (vulnerability-detector) -> Корреляция с CVE ->
-> Алерт -> Индексатор -> Дашборд
```

### Процесс сопоставления

Модуль vulnerability-detector выполняет следующие операции:

1. Получает данные инвентаризации от агента через syscollector
2. Загружает обновления фидов уязвимостей по расписанию
3. Для каждого пакета проверяет наличие соответствующих CPE (Common Platform Enumeration) записей
4. Сопоставляет CPE с записями CVE в базе уязвимостей
5. Сравнивает версию установленного пакета с диапазоном уязвимых версий
6. Генерирует алерт с деталями уязвимости (CVE ID, CVSS, описание, затронутый пакет)

## Конфигурация vulnerability-detector

### Конфигурация на сервере

Модуль настраивается в `/var/ossec/etc/ossec.conf` на сервере Wazuh:

```xml
<vulnerability-detection>
  <enabled>yes</enabled>
  <index-status>yes</index-status>
  <feed-update-interval>60m</feed-update-interval>
</vulnerability-detection>
```

### Параметры конфигурации

| Параметр | Описание | По умолчанию |
|----------|----------|-------------|
| `enabled` | Включение модуля | yes |
| `index-status` | Индексация статуса уязвимостей | yes |
| `feed-update-interval` | Интервал обновления фидов (минимум 60m) | 60m |

### Подключение индексатора

Модуль требует настройки подключения к индексатору для хранения результатов:

```xml
<indexer>
  <enabled>yes</enabled>
  <hosts>
    <host>https://127.0.0.1:9200</host>
  </hosts>
  <ssl>
    <certificate_authorities>
      <ca>/etc/filebeat/certs/root-ca.pem</ca>
    </certificate_authorities>
    <certificate>/etc/filebeat/certs/filebeat.pem</certificate>
    <key>/etc/filebeat/certs/filebeat-key.pem</key>
  </ssl>
</indexer>
```

### Автономный режим

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

```xml
<vulnerability-detection>
  <enabled>yes</enabled>
  <index-status>yes</index-status>
  <feed-update-interval>60m</feed-update-interval>
  <offline-url>file:///var/ossec/var/vuln-feed/</offline-url>
</vulnerability-detection>
```

Автономный репозиторий загружается заранее и размещается на сервере Wazuh.

## Провайдеры фидов уязвимостей

Wazuh использует платформу Wazuh CTI для получения данных об уязвимостях. Данные агрегируются из нескольких первичных источников.

### Источники данных

| Источник | Описание | Покрытие |
|----------|----------|----------|
| NVD (National Vulnerability Database) | Основная база CVE от NIST | Все платформы |
| Canonical | Уязвимости в пакетах Ubuntu | Ubuntu |
| Red Hat | Уязвимости в RHEL и Fedora | RHEL, CentOS, Fedora |
| Debian | Уязвимости в пакетах Debian | Debian |
| ALAS (Amazon Linux Security Advisories) | Уязвимости Amazon Linux | Amazon Linux 1/2/2023 |
| Microsoft | Обновления безопасности Windows | Windows |
| CISA KEV | Известные эксплуатируемые уязвимости | Все платформы |
| Arch Linux | Уязвимости в Arch пакетах | Arch Linux |

### Приоритизация

При наличии информации из нескольких источников Wazuh использует вендор-специфичный фид как приоритетный. Например, для пакета на Ubuntu данные Canonical имеют приоритет над NVD, так как содержат информацию о точных версиях исправленных пакетов в репозитории дистрибутива.

## Конфигурация Syscollector

Syscollector - модуль агента, отвечающий за сбор данных инвентаризации. Настраивается в `/var/ossec/etc/ossec.conf` на стороне агента:

```xml
<wodle name="syscollector">
  <disabled>no</disabled>
  <interval>1h</interval>
  <scan_on_start>yes</scan_on_start>
  <hardware>yes</hardware>
  <os>yes</os>
  <network>yes</network>
  <packages>yes</packages>
  <ports all="no">yes</ports>
  <processes>yes</processes>
  <hotfixes>yes</hotfixes>
</wodle>
```

### Параметры syscollector

| Параметр | Описание | По умолчанию |
|----------|----------|-------------|
| `disabled` | Отключение модуля | no |
| `interval` | Интервал сбора данных | 1h |
| `scan_on_start` | Сканирование при запуске агента | yes |
| `hardware` | Информация об аппаратном обеспечении | yes |
| `os` | Информация об ОС | yes |
| `network` | Сетевые интерфейсы | yes |
| `packages` | Установленные пакеты | yes |
| `ports` | Открытые порты | yes |
| `processes` | Запущенные процессы | yes |
| `hotfixes` | Установленные обновления (Windows) | yes |

### Собираемые данные о пакетах

Для каждого пакета syscollector собирает:

- Имя пакета
- Версия
- Архитектура
- Источник (менеджер пакетов)
- Описание
- Дата установки

На Linux данные извлекаются из dpkg (Debian/Ubuntu), rpm (RHEL/CentOS), pacman (Arch). На Windows - из реестра (установленные программы) и базы обновлений.

## Уровни критичности

Wazuh использует систему CVSS (Common Vulnerability Scoring System) для классификации уязвимостей:

| CVSS Score | Критичность | Уровень алерта Wazuh |
|-----------|-------------|---------------------|
| 0.0 | None | - |
| 0.1 - 3.9 | Low | 5 |
| 4.0 - 6.9 | Medium | 7 |
| 7.0 - 8.9 | High | 10 |
| 9.0 - 10.0 | Critical | 13 |

Алерты уровня 12 и выше активируют уведомления по электронной почте (при настроенном email-нотификаторе).

## Примеры алертов

### Уязвимость с высокой критичностью

```json
{
  "timestamp": "2024-11-20T14:30:00.000+0000",
  "rule": {
    "level": 10,
    "description": "CVE-2024-6387 affects openssh-server",
    "id": "23505",
    "groups": ["vulnerability-detector"]
  },
  "agent": {
    "id": "003",
    "name": "web-server-prod"
  },
  "data": {
    "vulnerability": {
      "cve": "CVE-2024-6387",
      "title": "RegreSSHion: Remote Code Execution in OpenSSH",
      "severity": "High",
      "cvss": {
        "cvss3": {
          "base_score": "8.1",
          "vector": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"
        }
      },
      "package": {
        "name": "openssh-server",
        "version": "1:8.9p1-3ubuntu0.6",
        "architecture": "amd64",
        "condition": "Package less than 1:8.9p1-3ubuntu0.10"
      },
      "reference": "https://nvd.nist.gov/vuln/detail/CVE-2024-6387",
      "published": "2024-07-01",
      "status": "Active"
    }
  }
}
```

### Критическая уязвимость

```json
{
  "rule": {
    "level": 13,
    "description": "CVE-2021-44228 affects log4j2",
    "id": "23505"
  },
  "data": {
    "vulnerability": {
      "cve": "CVE-2021-44228",
      "title": "Apache Log4j2 Remote Code Execution",
      "severity": "Critical",
      "cvss": {
        "cvss3": {
          "base_score": "10.0"
        }
      },
      "package": {
        "name": "liblog4j2-java",
        "version": "2.14.1-1",
        "condition": "Package less than 2.17.1"
      },
      "status": "Active"
    }
  }
}
```

### Уязвимость с доступным исправлением

```json
{
  "data": {
    "vulnerability": {
      "cve": "CVE-2024-1234",
      "severity": "Medium",
      "package": {
        "name": "nginx",
        "version": "1.22.0-1",
        "condition": "Package less than 1.22.0-3"
      },
      "status": "Active",
      "remediation": "Upgrade nginx to version 1.22.0-3 or later"
    }
  }
}
```

## Расписание сканирования

### Настройка интервала обновления фидов

Параметр `feed-update-interval` определяет частоту обновления баз уязвимостей. Минимальное значение - 60 минут.

```xml
<vulnerability-detection>
  <feed-update-interval>60m</feed-update-interval>  <!-- Каждый час -->
</vulnerability-detection>
```

Допустимые единицы измерения: `s` (секунды), `m` (минуты), `h` (часы), `d` (дни).

### Настройка интервала syscollector

Интервал сбора инвентаризации настраивается независимо на агенте:

```xml
<wodle name="syscollector">
  <interval>1h</interval>    <!-- Каждый час -->
  <scan_on_start>yes</scan_on_start>
</wodle>
```

Рекомендуемые значения:

| Среда | Интервал syscollector | Интервал фидов |
|-------|----------------------|----------------|
| Высококритичная | 30m | 60m |
| Стандартная | 1h | 60m |
| Низкоприоритетная | 12h | 24h |

## Дашборд уязвимостей

Дашборд Vulnerability Detection в Wazuh Dashboard предоставляет:

- **Сводка** - общее количество уязвимостей по уровням критичности
- **Топ уязвимых агентов** - системы с наибольшим количеством уязвимостей
- **Топ CVE** - наиболее распространенные уязвимости в инфраструктуре
- **Распределение по критичности** - диаграмма по CVSS score
- **Временная шкала** - динамика обнаружения уязвимостей
- **Детализация по агенту** - список уязвимостей для конкретной системы
- **Фильтрация** - по агенту, CVE ID, критичности, пакету, статусу

Доступ к дашборду: Wazuh Dashboard - Modules - Vulnerability Detection.

## Управление ложными срабатываниями

### Списки исключений

Для исключения известных ложных срабатываний используйте правила с уровнем 0:

```xml
<rule id="100400" level="0">
  <if_sid>23505</if_sid>
  <field name="data.vulnerability.cve">CVE-2023-12345</field>
  <description>False positive: CVE-2023-12345 not applicable in this configuration.</description>
</rule>
```

### Исключение по пакету

```xml
<rule id="100401" level="0">
  <if_sid>23505</if_sid>
  <field name="data.vulnerability.package.name">^libexample$</field>
  <description>Suppress vulnerability alerts for libexample (internal package).</description>
</rule>
```

### Исключение по агенту

```xml
<rule id="100402" level="0">
  <if_sid>23505</if_sid>
  <field name="agent.name">^test-server-</field>
  <description>Suppress vulnerability alerts for test servers.</description>
</rule>
```

### Рекомендации по управлению ложными срабатываниями

1. Не подавляйте алерты для критических CVE без документированного обоснования
2. Периодически пересматривайте список исключений (рекомендуется раз в квартал)
3. Используйте поле `description` для документирования причины исключения
4. Рассмотрите применение компенсирующих мер вместо подавления алерта

## Сравнение с альтернативными решениями

| Характеристика | Wazuh VD | Qualys VMDR | Tenable Nessus | OpenVAS |
|---------------|----------|-------------|----------------|---------|
| Метод сканирования | Агентный (инвентаризация) | Агентный + сетевой | Сетевой + агентный | Сетевой |
| Базы уязвимостей | NVD, вендорные | Проприетарная QID | Проприетарная | NVD, OVAL |
| CVSS scoring | Да (v3) | Да (v3 + TruRisk) | Да (v3 + VPR) | Да (v3) |
| Реальное время | Периодический (по расписанию) | Непрерывный | По запросу / расписание | По запросу |
| Интеграция с SIEM | Встроенная | Через API/Syslog | Через API/Syslog | Через API |
| Лицензия | Open Source (GPLv2) | Коммерческая | Коммерческая | Open Source (GPL) |
| Агентная установка | Wazuh Agent | Cloud Agent | Nessus Agent | Нет |
| Поддержка Windows | Да | Да | Да | Ограниченная |
| Web-приложения | Нет | Да (WAS) | Да | Ограниченная |
| Приоритизация | CVSS + CISA KEV | TruRisk | VPR | CVSS |

Wazuh выделяется агентным подходом без необходимости сетевого сканирования, встроенной интеграцией с SIEM и бесплатной лицензией. Ограничением является отсутствие сканирования веб-приложений и зависимость от публичных баз CVE.

## Устранение неполадок

### Уязвимости не обнаруживаются

1. Проверьте, что модуль vulnerability-detection включен на сервере:
```xml
<vulnerability-detection>
  <enabled>yes</enabled>
</vulnerability-detection>
```

2. Убедитесь, что syscollector включен на агенте:
```xml
<wodle name="syscollector">
  <disabled>no</disabled>
  <packages>yes</packages>
</wodle>
```

3. Проверьте статус обновления фидов:
```bash
grep vulnerability /var/ossec/logs/ossec.log | tail -20
```

4. Убедитесь, что данные инвентаризации доступны:
```bash
curl -sk -u admin:password \
  "https://localhost:9200/wazuh-states-inventory-*/_search?size=1" \
  -H "Content-Type: application/json"
```

### Фиды не обновляются

1. Проверьте сетевое подключение к серверу обновлений:
```bash
curl -s https://cti.wazuh.com/api/v1/ping
```

2. Проверьте DNS-разрешение:
```bash
nslookup cti.wazuh.com
```

3. Для автономного режима убедитесь, что файлы фидов доступны:
```bash
ls -la /var/ossec/var/vuln-feed/
```

### Слишком много алертов об уязвимостях

1. Создайте правила исключения для известных ложных срабатываний (см. раздел выше)

2. Настройте приоритизацию - сфокусируйтесь на критических и высоких уязвимостях:
```bash
curl -sk -u admin:password \
  "https://localhost:9200/wazuh-states-vulnerabilities-*/_search" \
  -H "Content-Type: application/json" \
  -d '{"size":0,"aggs":{"severity":{"terms":{"field":"vulnerability.severity"}}}}'
```

3. Регулярно обновляйте пакеты для устранения уязвимостей.

### Syscollector не собирает данные

1. Проверьте статус модуля:
```bash
/var/ossec/bin/wazuh-control status | grep modulesd
```

2. Убедитесь, что менеджер пакетов доступен:
```bash
# Debian/Ubuntu
dpkg -l | head -5

# RHEL/CentOS
rpm -qa | head -5
```

3. Проверьте логи агента:
```bash
grep syscollector /var/ossec/logs/ossec.log | tail -20
```

### Высокая нагрузка при сканировании

1. Увеличьте интервал syscollector:
```xml
<wodle name="syscollector">
  <interval>12h</interval>
</wodle>
```

2. Отключите ненужные модули сбора:
```xml
<wodle name="syscollector">
  <hardware>no</hardware>
  <processes>no</processes>
  <ports>no</ports>
</wodle>
```

3. Оставьте только критически необходимые данные: `packages` и `hotfixes`.

## Связанные разделы

- [Мониторинг целостности файлов](/docs/wazuh/capabilities/wazuh-file-integrity-monitoring/) - FIM обнаруживает изменения, vulnerability detection выявляет уязвимости в установленном ПО
- [Оценка конфигурации безопасности](/docs/wazuh/capabilities/wazuh-sca/) - SCA проверяет конфигурации, дополняя данные об уязвимостях
- [Компоненты Wazuh](/docs/wazuh/getting-started/wazuh-components/) - роли агента и сервера в процессе обнаружения уязвимостей

