Skip to content

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

↑↓NavigierenEnterÖffnenESCSchließen
Schwachstellenmanagement Glossary

CISA KEV - Known Exploited Vulnerabilities Catalog

The CISA KEV (Known Exploited Vulnerabilities) Catalog is a list of actively exploited vulnerabilities maintained by the U.S. agency CISA. All U.S. federal agencies are required to patch KEV vulnerabilities within defined timeframes. For businesses: Prioritization guidance beyond CVSS—if a vulnerability is listed in KEV, it is being actively exploited. API access and integration with patch management, SIEM, and vulnerability scanners.

CISA KEV (Known Exploited Vulnerabilities) is a free catalog from the U.S. Cybersecurity and Infrastructure Security Agency (CISA) that lists vulnerabilities currently being exploited in real-world attacks. Unlike CVSS (which only assesses theoretical severity), KEV provides a clear statement: "This vulnerability is being exploited RIGHT NOW." For prioritization decisions in patch management, KEV is often more relevant than CVSS alone.

Why CISA KEV is important

The problem with CVSS prioritization

  • 20,000+ new CVEs per year
  • 60–70% of all CVEs: CVSS ≥ 7.0 (High/Critical)
  • Impossible: patch all high/critical vulnerabilities immediately
  • Result: Prioritization based on CVSS = guessing in the dark

CISA KEV as a Solution

  • "This vulnerability is actively being exploited in attacks"
  • Source data: CISA telemetry, FBI, partner ISACs, public reports
  • As of March 2026: ~1,200 entries (out of 200,000+ CVEs!)
  • 1,200 out of 200,000 = 0.6% → patch these vulnerabilities IMMEDIATELY

KEV vs. CVSS: Examples

CVECVSSKEVRecommendation
CVE-2021-44228 (Log4Shell)10.0 CriticalYESPatch immediately
CVE-2019-11043 (PHP-FPM RCE)9.8 CriticalYESActively exploited!
Theoretical Critical9.5 CriticalNONo public exploit - prioritize based on KEV entries

U.S. Federal Agency Mandate (BOD 22-01)

  • Federal Civilian Executive Branch (FCEB) Agencies MUST patch
  • Deadlines: 2 weeks (Most) or 6 months (Older)
  • Proof of compliance to CISA

KEV Catalog Structure

API Endpoint

https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json

Sample Entry (JSON)

{
  "cveID": "CVE-2021-44228",
  "vendorProject": "Apache",
  "product": "Log4j2",
  "vulnerabilityName": "Apache Log4j2 Remote Code Execution Vulnerability",
  "dateAdded": "2021-12-10",
  "shortDescription": "Apache Log4j2 contains a vulnerability where JNDI features used in configuration, log messages, and parameters do not protect against attacker-controlled LDAP and other JNDI-related endpoints.",
  "requiredAction": "Apply updates per vendor instructions.",
  "dueDate": "2021-12-24",
  "knownRansomwareCampaignUse": "Known"
}

Fields at a Glance

FieldMeaning
cveIDCVE number
vendorProjectVendor
productAffected product
dateAddedWhen added to KEV
dueDatePatch deadline (for government agencies)
knownRansomwareCampaignUse"Known" = Ransomware groups are using it!

Statistics (March 2026)

  • ~1,200 total KEV entries
  • ~100 new entries per month
  • Top categories: Web servers, VPN, Exchange, Citrix
  • Ransomware link: ~30% of entries
  • Average CVSS: 8.5 (KEV entries are on average high/critical)
  • ~15% have CVSS < 7.0 (would be overlooked by normal prioritization!)

Integrate KEV into patch management

1. Query the KEV API daily

#!/bin/bash
KEV_URL=&quot;https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json&quot;
LAST_CHECKED=$(cat /var/lib/kev/last_checked.txt 2&gt;/dev/null || echo &quot;1970-01-01&quot;)
TODAY=$(date +%Y-%m-%d)

curl -s &quot;$KEV_URL&quot; | jq -r \
  --arg last &quot;$LAST_CHECKED&quot; \
  &#x27;.vulnerabilities[] | select(.dateAdded &gt; $last) | .cveID + &quot; - &quot; + .vulnerabilityName&#x27; \
  &gt; /tmp/new_kev_entries.txt

if [ -s /tmp/new_kev_entries.txt ]; then
  echo &quot;New KEV entries:&quot; &gt;&gt; /tmp/new_kev_entries.txt
  mail -s &quot;CISA KEV Update - $(wc -l &lt; /tmp/new_kev_entries.txt) new CVEs&quot; \
    security@example.com &lt; /tmp/new_kev_entries.txt
fi
echo &quot;$TODAY&quot; &gt; /var/lib/kev/last_checked.txt

2. Match KEV against your own asset inventory

import requests, json

# Load KEV
kev_data = requests.get(
  &quot;https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json&quot;
).json()
kev_cves = {v[&#x27;cveID&#x27;] for v in kev_data[&#x27;vulnerabilities&#x27;]}

# Own vulnerability data (e.g., Tenable CSV export)
import csv
with open(&#x27;vuln_export.csv&#x27;) as f:
  reader = csv.DictReader(f)
  for row in reader:
    if row[&#x27;CVE&#x27;] in kev_cves:
      print(f&quot;KEV MATCH: {row[&#x27;CVE&#x27;]} on {row[&#x27;hostname&#x27;]} - PATCH IMMEDIATELY!&quot;)

3. Vulnerability Scanner Integration

Tenable.io:

  • Filter: "CISA KEV" in Vulnerability Findings
  • Dashboard widget: KEV vulnerabilities by asset

Qualys VMDR:

  • CISA KEV label in vulnerability list
  • Asset risk score includes KEV

OpenVAS/Greenbone:

  • CISA KEV as a custom tag via API

4. Patch Prioritization Matrix

PriorityCriterionDeadline
1 - ImmediateKEV + CVSS Critical + public exploit≤ 24h
2 - This weekKEV (all, regardless of CVSS!)7 days
3 - This monthCVSS Critical + EPSS > 0.530 days
4 - QuarterlyCVSS High without KEV/exploit90 days
5 - ContinuousCVSS Medium/Lowongoing

Combining KEV and EPSS

EPSS (Exploit Prediction Scoring System)

  • 0.0–1.0: Probability that the CVE will be exploited within 30 days
  • EPSS > 0.5 = 50% probability of exploitation → patch!

Combined Model

CVE in KEV?EPSS ScorePriority
YES> 0.5CRITICAL (Immediately!)
YES0.1–0.5HIGH (This Week)
YES< 0.1HIGH (This week) - KEV overrides EPSS!
NO> 0.9HIGH
NO0.5-0.9MEDIUM
NO< 0.5LOW

Python: Retrieve EPSS scores for KEV CVEs

import requests

kev_resp = requests.get(
  &quot;https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json&quot;
).json()

kev_cves = [v[&#x27;cveID&#x27;] for v in kev_resp[&#x27;vulnerabilities&#x27;]]

# EPSS API (first.org)
cve_string = &#x27;,&#x27;.join(kev_cves[:100])  # Max 100 per request
epss_resp = requests.get(
  f&quot;https://api.first.org/data/v1/epss?cve={cve_string}&quot;
).json()

for item in epss_resp[&#x27;data&#x27;]:
  if float(item[&#x27;epss&#x27;]) &gt; 0.5:
    print(f&quot;HIGH PRIORITY: {item[&#x27;cve&#x27;]} EPSS={item[&#x27;epss&#x27;]:.2f} (KEV + High EPSS!)&quot;)

KEV Statistics (Research)

  • CISA KEV entries: on average, 94% have an EPSS > 0.1 after 30 days
  • Without KEV: 94% of all CVEs have an EPSS < 0.01 (never exploited!)
  • KEV is the strongest prioritization indicator of all

KEV in SIEM and Alerting

Microsoft Sentinel

// Watchlist: Import KEV CVEs
// Sentinel → Watchlists → New → Upload CSV
// Fields: CVE-ID, Vendor, Product, DateAdded, DueDate

// KQL: Alerts when vulnerable systems are detected
let KevCves = _GetWatchlist(&#x27;CISA-KEV&#x27;) | project CVE=CVEId;
SecurityAlert
| where AlertName contains &quot;CVE-&quot;
| where AlertName in (KevCves)
| project TimeGenerated, SystemAlertId, AlertName, Entities
| extend Priority = &quot;CRITICAL - KEV Match!&quot;

Splunk

| lookup kev_lookup cve_id OUTPUT vulnerability_name due_date
| where isnotnull(due_date)
| eval days_until_due = round((strptime(due_date, &quot;%Y-%m-%d&quot;) - now()) / 86400, 0)
| where days_until_due &lt;= 14  // Alert 14 days before due date

Alerting for new KEV entries

# Slack webhook when a new KEV entry is added
NEW_KEV=$(curl -s &quot;$KEV_URL&quot; | jq -r \
  --arg last &quot;$LAST_CHECKED&quot; \
  &#x27;.vulnerabilities[] | select(.dateAdded == (now | strftime(&quot;%Y-%m-%d&quot;))) | .cveID&#x27;)

if [ -n &quot;$NEW_KEV&quot; ]; then
  curl -X POST -H &#x27;Content-type: application/json&#x27; \
    --data &quot;{\&quot;text\&quot;:\&quot;CISA KEV Update: New CVEs $NEW_KEV - check immediately!\&quot;}&quot; \
    &quot;$SLACK_WEBHOOK_URL&quot;
fi