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: grpo-rl-training description: GRPO reinforcement learning training with TRL. Use when applying Group Relative Policy Optimization for reasoning and task-specific model training. --- # GRPO/RL Training with TRL Expert-level guidance for implementing Group Relative Policy Optimization (GRPO) using the Transformer Reinforcement Learning (TRL) library. This skill provides battle-tested patterns, critical insights, and production-r
tools
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT --> --- name: graphql-architect description: Master modern GraphQL with federation, performance optimization, --- ## Use this skill when - Working on graphql architect tasks or workflows - Needing guidance, best practices, or checklists for graphql architect ## Do not use this skill when - The task is unrelated to graphql architect - You need a different domain or tool outside this scope ## Instructions - Clarify goals, constraints, and
development
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT --> --- name: grafana-dashboards description: Create and manage production Grafana dashboards for real-time visualization of system and application metrics. Use when building monitoring dashboards, visualizing metrics, or creating operational observability interfaces. --- # Grafana Dashboards Create and manage production-ready Grafana dashboards for comprehensive system observability. ## Do not use this skill when - The task is unrelated
development
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT --> --- name: gptq description: GPTQ post-training quantization for generative models. Use when quantizing large models to 4-bit with calibration-based weight compression. --- # GPTQ (Generative Pre-trained Transformer Quantization) Post-training quantization method that compresses LLMs to 4-bit with minimal accuracy loss using group-wise quantization. ## When to use GPTQ **Use GPTQ when:** - Need to fit large models (70B+) on limited GPU