skills/codex/cve-epss-guide/SKILL.md
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT --> --- name: cve-epss-guide description: CVE/NVD/EPSS vulnerability prioritization guide for risk-based remediation --- # CVE/NVD/EPSS Vulnerability Prioritization Guide ## Overview Vulnerability management generates more findings than any team can remediate simultaneously. Effective prioritization separates critical risks from noise. This skill combines three complementary data sources to produce actionable remediation priorities: - **C
npx skillsauth add frank-luongt/faos-skills-marketplace skills/codex/cve-epss-guideInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Vulnerability management generates more findings than any team can remediate simultaneously. Effective prioritization separates critical risks from noise. This skill combines three complementary data sources to produce actionable remediation priorities:
Using CVSS alone leads to "alert fatigue" -- roughly 50% of CVEs score 7.0 or higher, but fewer than 5% are ever exploited. EPSS and CISA KEV provide the exploit-likelihood signal needed to focus on what actually matters.
Gather CVE identifiers from your scanning tools, security advisories, or threat intelligence feeds. Each CVE follows the format CVE-YYYY-NNNNN (e.g., CVE-2024-3094).
Key data sources for CVE information:
| Source | URL | Data Provided | |-------------|------------------------------------------|----------------------------------| | NVD | https://nvd.nist.gov/vuln/detail/CVE-ID | CVSS, CWE, CPE, references | | MITRE CVE | https://cve.mitre.org/cgi-bin/cvename.cgi | CVE description, status | | GitHub Advisory | https://github.com/advisories | Ecosystem-specific (npm, pip) | | OSV | https://osv.dev | Open-source vulnerability data |
CVE lifecycle stages: Reserved (ID assigned, details pending) -> Published (details disclosed) -> Analyzed (NVD adds CVSS/CWE) -> Modified (updates applied)
CVSS v3.1 provides a standardized severity score from 0.0 to 10.0:
| Score Range | Severity | Typical SLA | |-------------|----------|--------------| | 9.0 - 10.0 | Critical | 24-72 hours | | 7.0 - 8.9 | High | 7-14 days | | 4.0 - 6.9 | Medium | 30-60 days | | 0.1 - 3.9 | Low | 90 days |
CVSS comprises three metric groups:
Important: Base CVSS alone over-prioritizes. A CVSS 9.8 with no known exploit and low EPSS is lower risk than a CVSS 7.5 with active exploitation.
Query the EPSS API for the probability of exploitation within 30 days:
# Query EPSS for a single CVE
curl -s "https://api.first.org/data/v1/epss?cve=CVE-2024-3094" | jq '.data[0]'
# Response:
# {
# "cve": "CVE-2024-3094",
# "epss": "0.93217",
# "percentile": "0.99842",
# "date": "2026-02-24"
# }
EPSS interpretation:
| EPSS Score | Meaning | Action | |------------|---------------------------------------|-----------------------| | > 0.70 | Very high exploitation probability | Treat as emergency | | 0.30-0.70 | Significant exploitation probability | Prioritize this week | | 0.10-0.30 | Moderate exploitation probability | Schedule within SLA | | < 0.10 | Low exploitation probability | Standard SLA applies |
Query the CISA Known Exploited Vulnerabilities catalog:
# Download the full KEV catalog
curl -s "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json" \
| jq '.vulnerabilities[] | select(.cveID == "CVE-2024-3094")'
If a CVE appears in the KEV catalog, it has been confirmed exploited in the wild. CISA mandates federal agencies remediate KEV entries by the listed due date. Private organizations should treat KEV entries as highest priority.
Combine all signals into a priority score:
| Priority | Criteria | Target SLA | |----------|---------------------------------------------|--------------| | P0 | In CISA KEV OR EPSS > 0.7 | 24-48 hours | | P1 | CVSS >= 9.0 AND EPSS > 0.3 | 72 hours | | P2 | CVSS >= 7.0 AND EPSS > 0.1 | 7 days | | P3 | CVSS >= 7.0 AND EPSS <= 0.1 | 30 days | | P4 | CVSS < 7.0 AND EPSS <= 0.1 | 90 days |
Asset criticality should further adjust priority: a P3 vulnerability on a production database may warrant P2 treatment.
For each prioritized vulnerability:
"""
Vulnerability triage script that combines NVD, EPSS, and CISA KEV data
to produce a prioritized remediation list.
"""
import requests
from dataclasses import dataclass
@dataclass
class VulnAssessment:
cve_id: str
cvss_score: float
epss_score: float
epss_percentile: float
in_kev: bool
priority: str
sla_hours: int
def get_cvss_score(cve_id: str) -> float:
"""Fetch CVSS v3.1 base score from NVD API."""
url = f"https://services.nvd.nist.gov/rest/json/cves/2.0?cveId={cve_id}"
resp = requests.get(url, headers={"apiKey": "YOUR_NVD_API_KEY"})
resp.raise_for_status()
data = resp.json()
vulns = data.get("vulnerabilities", [])
if not vulns:
return 0.0
metrics = vulns[0]["cve"].get("metrics", {})
cvss_v31 = metrics.get("cvssMetricV31", [{}])
if cvss_v31:
return cvss_v31[0]["cvssData"]["baseScore"]
return 0.0
def get_epss_score(cve_id: str) -> tuple[float, float]:
"""Fetch EPSS probability and percentile."""
url = f"https://api.first.org/data/v1/epss?cve={cve_id}"
resp = requests.get(url)
resp.raise_for_status()
data = resp.json()["data"]
if data:
return float(data[0]["epss"]), float(data[0]["percentile"])
return 0.0, 0.0
def check_kev(cve_id: str, kev_data: dict) -> bool:
"""Check if CVE is in CISA KEV catalog."""
return any(v["cveID"] == cve_id for v in kev_data.get("vulnerabilities", []))
def calculate_priority(cvss: float, epss: float, in_kev: bool) -> tuple[str, int]:
"""Calculate priority and SLA based on combined risk signals."""
if in_kev or epss > 0.7:
return "P0", 48
if cvss >= 9.0 and epss > 0.3:
return "P1", 72
if cvss >= 7.0 and epss > 0.1:
return "P2", 168 # 7 days
if cvss >= 7.0:
return "P3", 720 # 30 days
return "P4", 2160 # 90 days
def triage_vulnerabilities(cve_ids: list[str]) -> list[VulnAssessment]:
"""Triage a list of CVEs and return prioritized assessments."""
kev_url = "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json"
kev_data = requests.get(kev_url).json()
results = []
for cve_id in cve_ids:
cvss = get_cvss_score(cve_id)
epss, percentile = get_epss_score(cve_id)
in_kev = check_kev(cve_id, kev_data)
priority, sla = calculate_priority(cvss, epss, in_kev)
results.append(VulnAssessment(
cve_id=cve_id,
cvss_score=cvss,
epss_score=epss,
epss_percentile=percentile,
in_kev=in_kev,
priority=priority,
sla_hours=sla,
))
results.sort(key=lambda v: (v.priority, -v.epss_score))
return results
EPSS > 0.3 EPSS 0.1-0.3 EPSS < 0.1
+-----------------+-----------------+-----------------+
CVSS >= 9.0 | P1 (72h) | P2 (7d) | P3 (30d) |
+-----------------+-----------------+-----------------+
CVSS 7.0-8.9 | P1 (72h) | P2 (7d) | P3 (30d) |
+-----------------+-----------------+-----------------+
CVSS 4.0-6.9 | P2 (7d) | P3 (30d) | P4 (90d) |
+-----------------+-----------------+-----------------+
CVSS < 4.0 | P3 (30d) | P4 (90d) | P4 (90d) |
+-----------------+-----------------+-----------------+
Override: CISA KEV = P0 (48h) regardless of CVSS/EPSS
Modifier: Critical asset = promote one level (P3 -> P2)
development
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT --> --- name: databricks-mlflow-evaluation --- # MLflow 3 GenAI Evaluation ## Before Writing Any Code 1. **Read GOTCHAS.md** - 15+ common mistakes that cause failures 2. **Read CRITICAL-interfaces.md** - Exact API signatures and data schemas ## End-to-End Workflows Follow these workflows based on your goal. Each step indicates which reference files to read. ### Workflow 1: First-Time Evaluation Setup For users new to MLflow GenAI evalu
development
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT --> --- name: databricks-lakebase-provisioned --- # Lakebase Provisioned Patterns and best practices for using Lakebase Provisioned (Databricks managed PostgreSQL) for OLTP workloads. ## When to Use Use this skill when: - Building applications that need a PostgreSQL database for transactional workloads - Adding persistent state to Databricks Apps - Implementing reverse ETL from Delta Lake to an operational database - Storing chat/agent m
tools
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT --> --- name: databricks-jobs --- # Databricks Lakeflow Jobs ## Overview Databricks Jobs orchestrate data workflows with multi-task DAGs, flexible triggers, and comprehensive monitoring. Jobs support diverse task types and can be managed via Python SDK, CLI, or Asset Bundles. ## Reference Files | Use Case | Reference File | | ----------------------
development
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT --> --- name: databricks-genie --- # Databricks Genie Create and query Databricks Genie Spaces - natural language interfaces for SQL-based data exploration. ## Overview Genie Spaces allow users to ask natural language questions about structured data in Unity Catalog. The system translates questions into SQL queries, executes them on a SQL warehouse, and presents results conversationally. ## When to Use This Skill Use this skill when: -