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

Модуль обнаружения уязвимостей в 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:

<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

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

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

<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 поддерживает автономный режим с локальным репозиторием:

<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Уязвимости в пакетах UbuntuUbuntu
Red HatУязвимости в RHEL и FedoraRHEL, CentOS, Fedora
DebianУязвимости в пакетах DebianDebian
ALAS (Amazon Linux Security Advisories)Уязвимости Amazon LinuxAmazon Linux 1/2/2023
MicrosoftОбновления безопасности WindowsWindows
CISA KEVИзвестные эксплуатируемые уязвимостиВсе платформы
Arch LinuxУязвимости в Arch пакетахArch Linux

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

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

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

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

<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.0None-
0.1 - 3.9Low5
4.0 - 6.9Medium7
7.0 - 8.9High10
9.0 - 10.0Critical13

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

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

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

{
  "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"
    }
  }
}

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

{
  "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"
    }
  }
}

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

{
  "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 минут.

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

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

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

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

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

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

СредаИнтервал syscollectorИнтервал фидов
Высококритичная30m60m
Стандартная1h60m
Низкоприоритетная12h24h

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

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

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

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

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

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

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

<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>

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

<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>

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

<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 VDQualys VMDRTenable NessusOpenVAS
Метод сканированияАгентный (инвентаризация)Агентный + сетевойСетевой + агентныйСетевой
Базы уязвимостей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 AgentCloud AgentNessus AgentНет
Поддержка WindowsДаДаДаОграниченная
Web-приложенияНетДа (WAS)ДаОграниченная
ПриоритизацияCVSS + CISA KEVTruRiskVPRCVSS

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

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

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

  1. Проверьте, что модуль vulnerability-detection включен на сервере:
<vulnerability-detection>
  <enabled>yes</enabled>
</vulnerability-detection>
  1. Убедитесь, что syscollector включен на агенте:
<wodle name="syscollector">
  <disabled>no</disabled>
  <packages>yes</packages>
</wodle>
  1. Проверьте статус обновления фидов:
grep vulnerability /var/ossec/logs/ossec.log | tail -20
  1. Убедитесь, что данные инвентаризации доступны:
curl -sk -u admin:password \
  "https://localhost:9200/wazuh-states-inventory-*/_search?size=1" \
  -H "Content-Type: application/json"

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

  1. Проверьте сетевое подключение к серверу обновлений:
curl -s https://cti.wazuh.com/api/v1/ping
  1. Проверьте DNS-разрешение:
nslookup cti.wazuh.com
  1. Для автономного режима убедитесь, что файлы фидов доступны:
ls -la /var/ossec/var/vuln-feed/

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

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

  2. Настройте приоритизацию - сфокусируйтесь на критических и высоких уязвимостях:

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"}}}}'
  1. Регулярно обновляйте пакеты для устранения уязвимостей.

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

  1. Проверьте статус модуля:
/var/ossec/bin/wazuh-control status | grep modulesd
  1. Убедитесь, что менеджер пакетов доступен:
# Debian/Ubuntu
dpkg -l | head -5

# RHEL/CentOS
rpm -qa | head -5
  1. Проверьте логи агента:
grep syscollector /var/ossec/logs/ossec.log | tail -20

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

  1. Увеличьте интервал syscollector:
<wodle name="syscollector">
  <interval>12h</interval>
</wodle>
  1. Отключите ненужные модули сбора:
<wodle name="syscollector">
  <hardware>no</hardware>
  <processes>no</processes>
  <ports>no</ports>
</wodle>
  1. Оставьте только критически необходимые данные: packages и hotfixes.

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

Last updated on