Zum Inhalt springen

Services, Wiki-Artikel, Blog-Beiträge und Glossar-Einträge durchsuchen

↑↓NavigierenEnterÖffnenESCSchließen
Vulnerability Management Glossar

EPSS - Exploit Prediction Scoring System

EPSS (Exploit Prediction Scoring System) ist ein datengetriebenes Modell von FIRST (Forum of Incident Response and Security Teams) das die Wahrscheinlichkeit berechnet, dass eine CVE innerhalb der nächsten 30 Tage aktiv in der freien Wildbahn ausgenutzt wird. EPSS ergänzt CVSS (das nur Schwere bewertet) um eine Ausnutzungswahrscheinlichkeit und ermöglicht risikoorientierte Priorisierung.

EPSS löst das größte Problem im Vulnerability Management: Priorität. Ein Unternehmen mit 5.000 offenen CVEs kann nicht alle gleichzeitig patchen. CVSS 10.0 bedeutet “maximale Schwere” - aber nicht “wird gerade aktiv ausgenutzt”. EPSS beantwortet genau diese Frage: Welche CVEs werden JETZT, diese Woche, aktiv ausgenutzt?

EPSS vs. CVSS

CVSS (Common Vulnerability Scoring System):

  • Misst: technische Schwere der Schwachstelle
  • Frage: “Wie schlimm wäre es WENN ausgenutzt?”
  • Keine Information über Ausnutzungswahrscheinlichkeit
  • Kritik: fast alle Critical CVEs haben CVSS 9.0-10.0 → keine Differenzierung

EPSS:

  • Misst: Wahrscheinlichkeit der aktiven Ausnutzung in den nächsten 30 Tagen
  • Frage: “Wird diese CVE WAHRSCHEINLICH ausgenutzt?”
  • Skala: 0.0-1.0 (0% bis 100% Wahrscheinlichkeit)
  • Täglich aktualisiert (neue Exploit-Daten fließen ein)
  • Erstellt durch: FIRST (Forum of Incident Response and Security Teams)

Kombinierter Ansatz (CTEM-Standard): Priorisierung = CVSS + EPSS + Erreichbarkeit + Business Impact

CVSSEPSSExpositionEmpfehlung
HochHochInternet-facingSOFORT patchen!
HochNiedrigInternRegulärer Patch-Zyklus
NiedrigHochInternet-facingBald patchen (wird ausgenutzt!)
NiedrigNiedrigInternNiedrige Priorität

Schlüsselstatistik: Nur 4% aller CVEs werden je aktiv ausgenutzt (FIRST-Daten) - 96% der nach CVSS priorisierten Patches wären nie nötig gewesen. EPSS identifiziert die relevanten 4% frühzeitig.

EPSS-Modell und Datenquellen

Datenquellen (Inputs):

  • CVE-Metadaten (Schwere, Typ, Alter, Angreifer-Komplexität)
  • Exploit-Code: ExploitDB, Metasploit, GitHub Security Advisories
  • Scanningaktivität: Shodan, Shadowserver (observierte Scans)
  • Darknet-Aktivität: Exploit-Verkauf, Nutzungssignale
  • Security Vendor Feeds: Vendor-Meldungen über aktive Ausnutzung

ML-Modell:

  • Gradient Boosting (XGBoost-ähnlich)
  • ~1.500 Features pro CVE
  • Training: historische Exploit-Daten (was wurde tatsächlich ausgenutzt?)
  • Tägliche Neuberechnung: neue Exploits → sofortiger Score-Anstieg
  • Validierung: Recall, Precision, F1-Score

EPSS Score-Interpretation:

ScoreBedeutung
> 0.90 (90 %)Sehr hohe Wahrscheinlichkeit - wird diese Woche genutzt!
0.50-0.90Hohe Wahrscheinlichkeit - prioritär behandeln
0.10-0.50Moderate Wahrscheinlichkeit - in Patch-Zyklen aufnehmen
0.01-0.10Geringe Wahrscheinlichkeit - Standard-Priorisierung
< 0.01 (1 %)Sehr geringe Wahrscheinlichkeit - niedrige Priorität

Bekannte Beispiele:

  • CVE-2021-44228 (Log4Shell): EPSS kurz nach Veröffentlichung: 0.97 (97 %) → sofort höchste Priorität - korrekte Einschätzung
  • CVE-2023-22515 (Atlassian Confluence RCE): EPSS: 0.96 (96 %) nach Patch-Veröffentlichung → aktiv ausgenutzt bevor viele gepatcht hatten

EPSS-API nutzen

FIRST EPSS API (kostenlos, keine Authentifizierung):

# Einzelne CVE abfragen:
curl "https://api.first.org/data/v1/epss?cve=CVE-2021-44228"

# Mehrere CVEs gleichzeitig:
curl "https://api.first.org/data/v1/epss?cve=CVE-2021-44228,CVE-2023-22515"

# Top-100 CVEs nach EPSS-Score (!epss = absteigende Sortierung):
curl "https://api.first.org/data/v1/epss?order=!epss&limit=100"

# CVEs mit EPSS > 0.5 (50%+ Ausnutzungswahrscheinlichkeit):
curl "https://api.first.org/data/v1/epss?epss-gt=0.5"

# Historischen Score abrufen:
curl "https://api.first.org/data/v1/epss?cve=CVE-2021-44228&date=2021-12-15"

Integration in Python:

import requests

def get_epss(cve_id: str) -> dict:
    r = requests.get(
        f"https://api.first.org/data/v1/epss?cve={cve_id}"
    )
    data = r.json()["data"]
    if data:
        return {
            "cve": cve_id,
            "epss": float(data[0]["epss"]),
            "percentile": float(data[0]["percentile"])
        }
    return {"cve": cve_id, "epss": 0.0, "percentile": 0.0}

# Vulnerability-Scan-Output anreichern:
vulnerabilities = [
    {"cve": "CVE-2021-44228", "cvss": 10.0},
    {"cve": "CVE-2023-1234",  "cvss": 7.5},
]

for vuln in vulnerabilities:
    epss_data = get_epss(vuln["cve"])
    vuln["epss"] = epss_data["epss"]
    vuln["priority"] = vuln["cvss"] * (1 + epss_data["epss"])  # Kombinierter Score

# Nach kombiniertem Score sortieren:
sorted_vulns = sorted(vulnerabilities, key=lambda x: x["priority"], reverse=True)

SIEM-Integration (Sentinel KQL):

SecurityAlert
| where AlertName contains "CVE"
| extend cve_id = extract("CVE-[0-9]+-[0-9]+", 0, AlertName)
| externaldata (cve: string, epss: real)
  [@"https://api.first.org/data/v1/epss"] with (format="json")
| lookup (SecurityCVEs | where epss > 0.5) on cve_id
| where isnotnull(epss)
| order by epss desc

EPSS in der Praxis

Tenable.io EPSS-Integration:

  • Seit 2023: EPSS-Score direkt in Tenable-UI
  • Filter: “Show only CVEs with EPSS > 0.50”
  • VPR (Vulnerability Priority Rating): kombiniert CVSS + EPSS + Asset-Kontext

Qualys TruRisk:

  • “Exploit Maturity” basiert auf EPSS und KEV
  • QDS (Qualys Detection Score): CVSS + EPSS + KEV kombiniert

Rapid7 InsightVM:

  • “Real Risk Score”: integriert EPSS
  • Dashboard: “Top Remediation” basierend auf EPSS + Erreichbarkeit

CISA KEV + EPSS = Goldstandard

KEV (Known Exploited Vulnerabilities) ist die Liste der CVEs die CISA als aktiv ausgenutzt bestätigt hat (“Confirmed exploitation in the wild”) - Pflicht-Patch für US-Behörden.

KombinationEmpfehlung
KEV-listed + EPSS > 0.5SOFORT (heute patchen!)
KEV-listed + EPSS < 0.5Innerhalb 24h (KEV ist Pflicht!)
EPSS > 0.5 (kein KEV)Innerhalb 7 Tage
EPSS 0.1-0.5Normaler Patch-Zyklus (30 Tage)
EPSS < 0.1Laut Schwere priorisieren
# CISA KEV herunterladen:
curl https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json \
  | jq '.vulnerabilities[] | {cveID, product, dateAdded}'

EPSS-Limitierungen:

  • Kein Kontext: EPSS kennt nicht ob Ihr System exponiert ist
  • Latenz: neuer CVE braucht Tage bis EPSS-Daten existieren
  • Kein Zero-Day: nicht bekannte CVEs haben keinen EPSS-Score
  • Kein Business Impact: $100k-System vs. Test-System werden gleichbehandelt
  • Lösung: EPSS + Asset-Kontext + Business Impact = vollständige Priorisierung

Cookielose Analyse via Matomo (selbst gehostet, kein Tracking-Cookie). Datenschutzerklärung