Patch-Priorisierung: CVE-Scores richtig lesen und umsetzen
Einleitung
Du hast hundert offene CVEs aber nur ein Maintenance-Fenster am Wochenende. Wer nach CVSS-Score sortiert und von oben anfängt, macht erstmal nichts falsch. Aber optimal ist es nicht. Wenn du verstehst, wie der Score zu lesen ist, kannst du die Priorisierung besser an DEIN Netz anpassen. Dieser Artikel erklärt, wie CVSS funktioniert, wo es versagt, und welche Zusatzinformationen du brauchst, um wirklich zu priorisieren.
Warum das Thema wichtig ist
Der CVSS-Score ist der de-facto-Standard zur Schwachstellenbewertung, wird aber gleichzeitig massiv missverstanden. Zum Beispiel bedeutet ein CVSS 9.8 in der Theorie: “extrem gefährlich”. Es bedeutet aber nicht, dass dieser auch aktiv ausgenutzt wird. Auch sagt er nichts darüber aus, wie relevant er für deine Umgebung ist. Wer blind nach CVSS priorisiert, verschwendet mit hoher Wahrscheinlichkeit Ressourcen auf Schwachstellen, die nie ausgenutzt werden, und übersieht vielleicht DIE CVSS-6.5-Lücke, die gerade aktiv in Exploit-Kits gepackt wird und die einen Initial Access auf deinem Webserver zulässt.
CVSS verstehen: Was der Score wirklich misst
Die drei Metriken-Gruppen
Der Base Score (statisch, theoretisch):
- Angriffsvektor (AV): Netzwerk / Angrenzend / Lokal / Physisch
- Angriffskomplexität (AC): Niedrig / Hoch
- Erforderliche Rechte (PR): Keine / Niedrig / Hoch
- Nutzerinteraktion (UI): Keine / Erforderlich
- Geltungsbereich (Scope, S): Unverändert / Verändert
- Auswirkung auf Vertraulichkeit / Integrität / Verfügbarkeit: Keine / Niedrig / Hoch
Temporal Score (zeitabhängig):
- Reifegrad des Exploit-Codes (Proof-of-Concept? Bewaffnet/Weaponized?)
- Grad der Behebung (offizieller Patch / Workaround / kein Fix)
- Vertrauenswürdigkeit der Meldung
Environmental Score (umgebungsspezifisch):
- Modifiziert die Base-Metriken anhand deiner spezifischen Umgebung Es ist schwer, diesen auf harte Kriterien festzulegen. Gewichtete Scores für einzelne Systeme betrachten neben dem Base Score auch die Anforderungen an Vertraulichkeit, Integrität und Verfügbarkeit (CIA-Triade)
Das Problem: Die meisten Tools zeigen nur den Base Score. Temporal und Environmental werden in der Praxis ignoriert – obwohl sie die eigentlich relevante Information liefern.
Score-Tabelle
| Score | Kategorie |
|---|---|
| 0.0 | None |
| 0.1 – 3.9 | Low |
| 4.0 – 6.9 | Medium |
| 7.0 – 8.9 | High |
| 9.0 – 10.0 | Critical |
Wo CVSS versagt
Base Score ≠ Ausnutzbarkeit. CVE-2021-44228 (Log4Shell, CVSS 10.0) wurde innerhalb von Stunden ausgenutzt. Natürlich war dies eine hochkritische Lücke auf Systemen, die Zugriff auf das Internet haben. CVE-2026-46333 (ptrace-Race, CVSS 7.8) klingt harmloser, war aber eine triviale Linux-Privilege-Escalation. Der Unterschied: Log4Shell war remote ohne Auth ausnutzbar, die ptrace-Race-Lücke brauchte lokalen Zugriff. Für eine Umgebung ohne extern erreichbare Linux-Systeme ist die ptrace-Race-Lücke deutlich weniger dringend, für das betroffene Gerät war es aber eine 12 von 10. CVSS betrachtet das nicht.
Ein sauberes Asset-Management hilft, kritische Systeme schneller zu identifizieren.
EPSS: Der bessere Priorisierungs-Ansatz
Der EPSS (Exploit Prediction Scoring System) beantwortet die richtige Frage: Wie hoch ist die Wahrscheinlichkeit, dass diese CVE in den nächsten 30 Tagen aktiv ausgenutzt wird?
FIRST berechnet den EPSS täglich neu auf Basis von:
- Verfügbarkeit von Exploit-Code (NVD, ExploitDB, GitHub)
- Aktivität in Threat-Intelligence-Feeds
- Referenzen in Malware-Samples
- Historischen Exploitation-Mustern ähnlicher CVEs
Die API-Abfrage ist kostenlos und ohne Registrierung möglich:
curl "https://api.first.org/data/v1/epss?cve=CVE-2021-44228"
Antwort:
{
"data": [{
"cve": "CVE-2021-44228",
"epss": "0.97564",
"percentile": "0.99994"
}]
}
EPSS 0.97 = Eine 97 % Wahrscheinlichkeit aktiver Ausnutzung in den nächsten 30 Tagen. Klare Ansage.
Die Zahlen, die alles ändern:
| Strategie | Aufwand | Abdeckung der ausgenutzten CVEs |
|---|---|---|
| Alle CVEs patchen | 100 % | 100 % |
| CVSS ≥ 7.0 patchen | ~58 % | ~82 % |
| EPSS ≥ 0.088 patchen | ~7 % | ~82 % |
Zahlen aus der EPSS-v3-Studie von Jacobs et al. (WEIS 2023, Cyentia/FIRST.org, Basis: reale Exploitation-Daten zu tausenden CVEs).
Betrachtet man EPSS, so erreicht man mit 7 % Aufwand dieselbe Abdeckung (82 %) wie bei reiner Betrachtung von CVSS, wo der Aufwand bei 58 % liegt. Der Effizienzgewinn: Achtmal weniger Patch-Aufwand für identische Trefferquote bei den tatsächlich ausgenutzten CVEs.
Die Priorisierungs-Matrix
Kombiniere CVSS, EPSS und CISA KEV:
Eingehende CVE
│
├── In CISA KEV? → JA → Priorität 1 (24 h)
│
├── EPSS > 0.5?
│ ├── + CVSS ≥ 7.0 → Priorität 1 (48 h)
│ └── + CVSS < 7.0 → Priorität 2 (7 Tage)
│
├── EPSS 0.1 – 0.5?
│ ├── + CVSS ≥ 9.0 → Priorität 2 (7 Tage)
│ └── + CVSS < 9.0 → Priorität 3 (30 Tage)
│
└── EPSS < 0.1, CVSS < 7 → Priorität 4 (nächstes Fenster)
CISA KEV als Trumpfkarte
Die Known Exploited Vulnerabilities-Liste (KEV) von CISA ist ein starker Indikator dafür, dass eine Schwachstelle als kritisch einzustufen ist. Sobald eine Schwachstelle in freier Wildbahn ausgenutzt wird, ist sie Priorität Nummer 1 und sollte umgehend gepatcht werden.
# Prüfen, ob eine CVE in der KEV-Liste steht
curl -s https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json \
| jq '.vulnerabilities[] | select(.cveID == "CVE-2023-23397")'
Umgebungskontext
Vor der finalen Priorisierung: Kontextcheck. Hier kommt das Wissen um die eigenen Systeme zum Tragen. Du musst wissen, welche Systeme vom Internet aus erreichbar sind.
Grob kann man sagen:
- Internet-Exposition? → +1 Stufe
- Sensible Daten auf/hinter dem System? → +1 Stufe
- Produkt nicht im Einsatz? → ignorieren
Workflow in der Praxis
Vulnerability-Scan (Greenbone/OpenVas, Nessus, ...)
│
├── CVE-Liste exportieren (CSV)
│
├── EPSS-Scores in Batch abrufen
│ curl "https://api.first.org/data/v1/epss?cve=CVE-X,CVE-Y,CVE-Z"
│
├── CISA KEV abgleichen
│
├── Sortieren nach Matrix
│
└── Tickets erstellen (mit SLA aus Matrix)
Beispiel-Snippet zum Anreichern einer CVE-Liste:
#!/bin/bash
CVES=$(cat scan_cves.txt | tr '\n' ',')
curl -s "https://api.first.org/data/v1/epss?cve=${CVES}" \
| jq -r '.data[] | [.cve, .epss, .percentile] | @tsv'
Tools, die helfen
- Vulners.com: aggregiert CVSS, EPSS, KEV-Status, Exploits in einer Ansicht
- Nuclei: testet aktiv auf Ausnutzbarkeit – aussagekräftiger als ein theoretischer Score
- Greenbone CE: kostenloser Scanner mit CVSS-Reports (EPSS musst du selbst anreichern)
- Tenable Nessus: alternativer Schwachstellenscanner
Praxis-Checkliste
- CVSS als Ausgangspunkt verstehen, nicht als alleinige Entscheidungsgrundlage
- EPSS-API in den Schwachstellen-Workflow integriert
- CISA KEV-Feed wöchentlich (am besten automatisch) abgeglichen
- Eigene Priorisierungs-Matrix dokumentiert
- Patch-SLAs je Prioritätsstufe definiert (24 h / 7 Tage / 30 Tage)
- Umgebungskontext berücksichtigt: Internet-Exposition, Datenkritikalität
- CVEs auf tatsächlich betriebene Produkte gefiltert
- Findings im Ticket-System mit Fälligkeit abgebildet
- Monatlicher Review: EPSS-Sprünge bei offenen CVEs überwachen
Fazit
CVSS kann nur ein Startpunkt sein. Wer Patch-Priorisierung professionell betreibt, kombiniert Base Score, EPSS, CISA KEV und Umgebungskontext. Dafür benötigt man keine teure Plattform – sondern etwas Zeit beim Aufbau des Workflows und Konsequenz bei der Ausführung.
Wenn du tiefer einsteigen willst: Im Newsletter schauen wir uns jeden Monat einen konkreten Security-Prozess an. Trag dich ein und bleib dran.