Wazuh Vulnerability Detection verstehen: Warum „manuell erzeugte“ CVEs nicht erscheinen und was Inventory von Events unterscheidet

Einleitung

Die Vulnerability Detection ist eines der leistungsstärksten, aber auch am häufigsten missverstandenen Module in Wazuh. Gerade bei Testszenarien – etwa dem absichtlichen Installieren veralteter Pakete – entsteht schnell der Eindruck, dass Wazuh Schwachstellen „nicht erkennt“ oder „nicht anzeigt“. In der Praxis liegt die Ursache jedoch fast immer im Zusammenspiel aus Paket-Inventarisierung, Feed-Updates und der klaren Trennung zwischen Inventory und Events. Dieser Artikel erklärt die Funktionsweise detailliert und zeigt, warum bestimmte CVEs nicht sofort (oder gar nicht) im Dashboard erscheinen.

Ausgangslage / Problemstellung

In einer Ubuntu-Umgebung wurden gezielt veraltete Pakete installiert, um bekannte Schwachstellen (z. B. CVE-2024-0727) zu erzeugen. Erwartung:

  • Die CVE erscheint im Wazuh Dashboard
  • Auffindbar über Vulnerability-ID (CVE)
  • Möglichst zeitnah (z. B. innerhalb von 5 Minuten)

Beobachtung:

  • Die Vulnerability Detection ist aktiv
  • Andere Vulnerabilities sind im Inventory sichtbar
  • Neu „erzeugte“ CVEs erscheinen jedoch nicht im Inventory
  • Auch im Events-Bereich werden keine Alerts generiert

Die Konfiguration zeigt ein korrekt laufendes Vulnerability-Modul und einen funktionierenden Indexer-Connector.

Technische Analyse

1) Wazuh erkennt keine „installierten CVEs“, sondern Pakete

Ein zentraler Punkt wird oft übersehen:
Wazuh erkennt keine CVEs direkt, sondern:

  1. Erfasst installierte Pakete (Name, Version, Architektur) über Syscollector
  2. Vergleicht diese Paketinformationen mit den offiziellen Vulnerability Feeds
  3. Leitet daraus ab, ob und welche CVEs auf ein Paket zutreffen

Konsequenz:

  • Eine CVE erscheint nur dann, wenn:
    • sie im offiziellen Feed enthalten ist und
    • sie explizit einem installierten Paket + Version zugeordnet ist
  • Das „Erzeugen“ einer CVE durch bloßes Installieren eines alten Pakets funktioniert nur, wenn genau diese Kombination im Feed modelliert ist

2) Warum eine bestimmte CVE (z. B. CVE-2024-0727) nicht auftaucht

Typische Gründe:

  • Die CVE betrifft ein Paket, das nicht auf Ubuntu oder nicht auf der verwendeten Ubuntu-Version relevant ist
  • Die CVE wurde im Feed:
    • zusammengefasst (z. B. durch Meta-Advisories)
    • als „not affected“ für diese Distribution markiert
    • oder betrifft nur Quellpakete, nicht das installierte Binärpaket
  • Das installierte Paket ist zwar „alt“, aber nicht alt genug, um in den betroffenen Versionsbereich der CVE zu fallen

Wichtig:
Die Suche im Inventory nach einer CVE-ID zeigt nur das, was tatsächlich aus dem Feed + Paketabgleich resultiert, nicht jede existierende CVE-Nummer.

3) Inventory vs. Events: Zwei völlig unterschiedliche Konzepte

Das Dashboard trennt bewusst zwischen Zustand und Veränderung.

Inventory (Vulnerability Detection → Inventory)

  • Aktueller Ist-Zustand
  • Zeigt alle aktuell vorhandenen Schwachstellen
  • Wird aus dem letzten erfolgreichen Abgleich berechnet
  • Unabhängig davon, ob jemals ein Alert ausgelöst wurde

Hier muss man zuerst schauen, wenn man prüfen will, ob Wazuh eine Vulnerability erkannt hat.

Events (Vulnerability Detection → Events)

  • Historische Ereignisse
  • Zeigt nur Änderungen, z. B.:
    • Vulnerability hinzugefügt (neues Paket installiert)
    • Vulnerability entfernt (Paket aktualisiert oder entfernt)
  • Keine Events beim ersten Initial-Scan

Das ist entscheidend:
Wenn ein Agent zum ersten Mal scannt und dabei veraltete Pakete findet, gilt das als „Initialzustand“ – kein Event, kein Alert.

4) Warum ein 5-Minuten-Intervall nicht funktioniert

In der Konfiguration wurde versucht:

<vulnerability-detection>
  <enabled>yes</enabled>
  <index-status>yes</index-status>
  <feed-update-interval>5m</feed-update-interval>
</vulnerability-detection>

Wazuh setzt hier automatisch Grenzen:

  • feed-update-interval muss mindestens 60 Minuten betragen
  • Kleinere Werte werden intern ignoriert oder auf 60 Minuten korrigiert
  • Hintergrund: Feeds sind groß, versioniert und nicht für High-Frequency-Polling gedacht

Wichtig:

  • Feed-Update-Intervall ≠ Scan-Intervall
  • Paketänderungen werden erst beim nächsten Syscollector-Scan erkannt
  • Danach erfolgt der Abgleich mit dem bereits vorhandenen Feed

Lösung / Best Practices

1) Erwartungshaltung korrekt setzen

  • Vulnerabilities erscheinen im Inventory, nicht zwingend in den Events
  • Eine CVE erscheint nur, wenn sie:
    • im Feed existiert
    • für die Distribution relevant ist
    • zur installierten Paketversion passt

2) Test-Szenarien richtig aufbauen

Für reproduzierbare Tests:

  • Ein Paket installieren, das nachweislich:
    • auf Ubuntu betroffen ist
    • im Wazuh Vulnerability Feed gelistet ist
  • Paket nachdem der Agent bereits läuft installieren
  • Auf den nächsten Syscollector-Scan warten
  • Inventory prüfen, nicht Events

3) Nach neuen Vulnerabilities filtern

Im Inventory-Bereich:

  • Nach Detection date / Published date sortieren
  • Nach Agent, Package oder Severity filtern
  • Nicht ausschließlich nach CVE-ID suchen

4) Konfiguration stabil halten

Empfohlene Minimal-Konfiguration:

<vulnerability-detection>
  <enabled>yes</enabled>
  <index-status>yes</index-status>
  <feed-update-interval>60m</feed-update-interval>
</vulnerability-detection>
  • Kürzere Intervalle bringen keinen Mehrwert
  • Zu aggressive Einstellungen führen eher zu Verwirrung als zu schnellerer Erkennung

Lessons Learned / Best Practices

  • Wazuh ist kein Vulnerability Scanner im klassischen Sinn, sondern ein Feed-basiertes State-System
  • Inventory = aktueller Zustand, Events = Veränderung über die Zeit
  • Initiale Schwachstellen erzeugen keine Alerts
  • CVEs sind distributions- und paketabhängig – nicht jede CVE ist überall sichtbar
  • Geduld ist Teil des Designs: Feed-Update ≠ Paketänderung ≠ Alert

Fazit

Wenn neu installierte, veraltete Pakete nicht sofort als Vulnerabilities im Wazuh Dashboard erscheinen, liegt das in den meisten Fällen nicht an einer Fehlkonfiguration, sondern an einem Missverständnis der Architektur. Entscheidend ist der Blick ins Inventory, nicht in die Events, sowie das Wissen, dass Wazuh nur das meldet, was Feed, Distribution und Paketversion eindeutig hergeben. Wer diese Trennung versteht, kann die Vulnerability Detection gezielt testen, korrekt interpretieren und realistisch in den Betrieb integrieren.

Mehr zu Wazuh …
https://wazuh.com/?utm_source=ambassadors&utm_medium=referral&utm_campaign=ambassadors+program

Mehr zum Wazuh Ambassador Program …
https://wazuh.com/ambassadors-program/?utm_source=ambassadors&utm_medium=referral&utm_campaign=ambassadors+program

https://wazuh.slack.com/archives/C07CNG3M11N/p1769281302254739