DOMAIN:SUPPLY_CHAIN:VULNERABILITY_MANAGEMENT¶
OWNER: julian, pol
ALSO_USED_BY: koen, victoria, ashley
UPDATED: 2026-03-26
SCOPE: CVE monitoring, prioritisation, patching SLAs, zero-day response
OVERVIEW¶
In 2025, barely 1% of disclosed CVEs were actively exploited.
Those exploited caused outsized damage.
28.96% of KEVs showed exploitation on or before disclosure day (up from 23.6% in 2024).
Zero-day exploits increased 46% in H1 2025 (Cybernews).
Over 60% of KEVs are remediated after CISA deadlines (BitSight).
The challenge is not finding vulnerabilities — it is prioritising the right ones.
CVE MONITORING¶
SOURCES¶
PRIMARY:
- NVD (National Vulnerability Database) — US government, comprehensive
- CISA KEV Catalog (Known Exploited Vulnerabilities) — exploitation confirmed
- GitHub Security Advisories — repository-specific
- OSV (Open Source Vulnerabilities) — Google, multi-ecosystem
SECONDARY:
- vendor security advisories (AWS, Microsoft, etc.)
- package-specific advisories (npm audit, pip-audit)
- threat intelligence feeds (commercial — Recorded Future, Mandiant)
MONITORING TOOLS¶
TOOL: trivy — continuous scanning in CI and runtime
TOOL: Grype (Anchore) — SBOM-based vulnerability matching
TOOL: Snyk — commercial, good developer UX
TOOL: npm audit — built-in, npm ecosystem only
TOOL: Socket.dev — behaviour-based detection (beyond CVE matching)
TOOL: GitHub Dependabot alerts — automatic for GitHub-hosted repos
MONITORING CADENCE¶
CI/CD: scan at every build — block deployment on critical findings
PRODUCTION: daily scan of deployed images/SBOMs
REAL-TIME: CISA KEV monitoring (subscribe to RSS/email alerts)
WEEKLY: review all new advisories affecting tech stack
VULNERABILITY PRIORITISATION¶
THREE KEY SIGNALS¶
Each signal answers a different question:
1. KEV — CISA Known Exploited Vulnerabilities¶
ANSWERS: is this vulnerability being exploited in the wild right now?
SIGNAL: binary (yes/no) — the strongest signal available
COUNT: 884 KEVs identified in 2025 (118 unique disclosure sources)
ACTION: if in KEV → immediate triage, bypass standard SLA
2. EPSS — Exploit Prediction Scoring System¶
ANSWERS: what is the probability this CVE will be exploited in next 30 days?
SCALE: 0.0 to 1.0 (probability)
VERSION: EPSS v4 (Mar 2025) — consumes 250K+ threat intelligence data points daily
CAN score CVEs in NVD backlog (when official analysis delayed)
ACTION: EPSS >= 0.7 → treat as high urgency even without KEV listing
EPSS >= 0.1 → elevated monitoring, accelerate patching
3. CVSS — Common Vulnerability Scoring System¶
ANSWERS: how severe could exploitation be in technical terms?
SCALE: 0.0 to 10.0
VERSIONS: CVSS 3.1 (current standard), CVSS 4.0 (adoption growing)
LIMITATION: does not indicate likelihood of exploitation
LIMITATION: same CVSS 9.8 could be widely exploited or never exploited
PRIORITISATION ORDER¶
1. Is CVE in KEV or otherwise confirmed exploited?
YES → Emergency tier
2. Is vulnerable asset internet-facing or reachable?
YES → Elevate priority
3. Does system hold identity, admin, or sensitive business data?
YES → Elevate priority
4. Does EPSS suggest exploitation pressure rising?
EPSS >= 0.7 → Accelerated tier
EPSS >= 0.1 → Standard tier with monitoring
5. What is CVSS technical impact?
>= 9.0 → High impact
>= 7.0 → Medium-high impact
< 7.0 → Standard impact
RULE: "KEV usually outranks CVSS and EPSS.
EPSS helps find tomorrow's KEV candidates.
CVSS helps understand technical consequence."
REACHABILITY ANALYSIS¶
NOT every vulnerability in SBOM is actually exploitable.
REACHABILITY: is the vulnerable function actually called from our code?
TOOLS:
- Snyk reachability analysis (commercial)
- Grype + Reachable (experimental)
- Manual code analysis for critical findings
IF_NOT_REACHABLE: lower priority but still patch within standard SLA.
DOCUMENT: reachability assessment for any vulnerability accepted as risk.
PATCHING SLAs¶
TIER STRUCTURE¶
| Tier | Criteria | SLA | Examples |
|---|---|---|---|
| EMERGENCY | KEV-listed + internet-facing/critical asset | <48 hours | RCE in web server, auth bypass |
| ACCELERATED | EPSS >= 0.7 OR public exploit + exposed asset | 7 days | Privilege escalation in prod dep |
| STANDARD | CVSS >= 7.0 OR EPSS >= 0.1 | 30 days | High-severity without exploitation |
| ROUTINE | CVSS < 7.0, low EPSS, compensating controls | 60-90 days | Medium/low severity, isolated system |
SLA EXCEPTIONS¶
RISK_ACCEPTANCE: if patching breaks functionality — document with:
- vulnerability details and impact assessment
- compensating controls implemented
- planned remediation date
- senior management approval
- review date (max 30 days)
WAIVER_LIMIT: no waiver for KEV-listed vulnerabilities — must patch or isolate.
SLA TRACKING¶
METRIC: % of vulnerabilities remediated within SLA per tier
TARGET: 95% for Emergency/Accelerated, 90% for Standard, 80% for Routine
REPORT: monthly vulnerability management dashboard
ESCALATION: SLA breach → escalate to Team PM → human if unresolved
ZERO-DAY RESPONSE¶
DEFINITION¶
ZERO-DAY: vulnerability that is exploited before patch is available.
Zero-day exploits increased 46% in H1 2025.
RESPONSE PROCEDURE¶
HOUR_0: alert received (KEV listing, vendor advisory, threat intelligence)
HOUR_0-2: triage
- confirm vulnerability affects our stack
- assess reachability in our codebase
- determine exposed assets (internet-facing, internal)
- classify severity (critical, high, medium)
HOUR_2-8: mitigate
- IF patch available: apply to production (emergency change)
- IF no patch: implement compensating controls:
- WAF rules to block exploit patterns
- network segmentation to isolate affected systems
- disable affected feature if possible
- rate limiting to slow exploitation
- enhanced monitoring/alerting for exploit signatures
HOUR_8-48: resolve
- apply vendor patch when available
- verify fix deployment
- scan for indicators of compromise
- update SBOM and vulnerability records
- notify affected clients if their systems exposed
POST_INCIDENT:
- document timeline and response actions
- update playbook if new patterns identified
- review if earlier detection was possible
DEPENDENCY CONFUSION ATTACKS¶
ATTACK VECTOR¶
Attacker registers a public package with the same name as a private/internal package.
Package manager resolves to public version (typically higher version number).
Malicious code executes during install or at runtime.
DETECTION¶
CHECK: audit package-lock.json resolved URLs — all should point to expected registry
CHECK: monitor for public packages matching internal package names
TOOL: Socket.dev detects dependency confusion patterns
TOOL: npm audit signatures verifies package provenance
PREVENTION¶
CHECK: use scoped packages for all internal packages (@ge/package-name)
CHECK: configure npm scope to internal registry in .npmrc
CHECK: register placeholder packages on public npm for internal names
CHECK: disable public registry fallback for internal scoped packages
TYPOSQUATTING DETECTION¶
ATTACK VECTOR¶
Attacker publishes package with name similar to popular package.
Developer mistypes package name during install.
Malicious code executes via install scripts or at runtime.
2025_SCALE: 71.2% of malicious packages use names >10 characters with dashes (mimicking legitimate patterns).
LAZARUS_GROUP: 800+ associated packages on npm in 2025.
DETECTION¶
CHECK: review package name carefully before npm install
CHECK: verify package publisher and download counts
CHECK: use IDE/CLI autocomplete rather than typing package names
TOOL: Socket.dev flags potential typosquats
TOOL: npm shows "did you mean?" for misspelled package names
PREVENTION¶
CHECK: lock file review in every PR — catches unexpected package additions
CHECK: install scripts disabled by default (.npmrc: ignore-scripts=true)
CHECK: pre-approved package list for critical projects
CHECK: automated scanning for newly added dependencies in CI
VEX (Vulnerability Exploitability eXchange)¶
WHAT¶
VEX is a companion to SBOM that communicates vulnerability status.
SBOM lists components. VEX says whether a known vulnerability in a component actually affects your product.
WHY¶
SBOM + CVE matching produces many false positives.
A component may have a vulnerability but the vulnerable function is not called.
VEX lets producer communicate: "this CVE is in our SBOM but does not affect our product."
STATUS VALUES¶
NOT_AFFECTED: vulnerability present in component but not exploitable in this product
AFFECTED: vulnerability is exploitable — patch in progress
FIXED: vulnerability was present and has been remediated
UNDER_INVESTIGATION: assessment in progress
FORMAT¶
CSAF (Common Security Advisory Framework) — OASIS standard, machine-readable
CycloneDX VEX — embedded in CycloneDX SBOM or standalone
OpenVEX — lightweight, focused format
CRA RELEVANCE¶
CRA requires vulnerability handling throughout product lifetime.
VEX is the mechanism to communicate vulnerability status to customers/authorities.
SEPARATE from SBOM — CRA says SBOM must NOT contain vulnerability info (use VEX/CSAF instead).
INCIDENT RESPONSE TEMPLATES¶
CRITICAL CVE IN PRODUCTION DEPENDENCY¶
1. ASSESS reachability — is vulnerable function called from our code?
2. CHECK exploit availability — public exploit? (KEV catalog, ExploitDB)
3. DETERMINE severity — CVSS + reachability + data sensitivity + EPSS
4. REMEDIATE by SLA:
- CRITICAL (KEV + reachable): <48h
- HIGH (EPSS >= 0.7): 7d
- MEDIUM: 30d
5. UPDATE SBOM
6. UPDATE VEX status
7. NOTIFY affected clients if production was exposed
PACKAGE COMPROMISE (event-stream, ua-parser-js scenarios)¶
1. IMMEDIATELY pin to last known good version
2. AUDIT git history of package for malicious changes
3. CHECK if malicious version was installed in any environment
4. ROTATE any credentials that may have been exfiltrated
5. SCAN for indicators of compromise (network connections, file changes)
6. REPORT to npm/registry + NCSC-NL if significant
7. UPDATE incident report and post-mortem
SUPPLY CHAIN WORM (Shai-Hulud scenario)¶
1. ISOLATE affected environments (network segmentation)
2. IDENTIFY all affected packages (worm propagation path)
3. PIN all dependencies to pre-compromise versions
4. REBUILD from clean state (do not trust node_modules)
5. ROTATE all secrets accessible from CI/CD
6. AUDIT CI/CD logs for exfiltration
7. COORDINATE with package registry security team
METRICS AND REPORTING¶
KEY METRICS¶
MTTR_BY_TIER: mean time to remediation per severity tier
SLA_COMPLIANCE: % of vulns patched within SLA
OUTSTANDING: count of open vulnerabilities by tier
TREND: month-over-month change in vulnerability backlog
COVERAGE: % of production systems with active vulnerability scanning
EPSS_TRACKING: % of EPSS >= 0.7 issues mitigated within SLA
REPORTING CADENCE¶
DAILY: automated scan results (CI/CD pipeline output)
WEEKLY: new vulnerability summary for engineering team
MONTHLY: vulnerability management dashboard for management
QUARTERLY: trend analysis and SLA compliance review
READ_ALSO: domains/supply-chain/index.md, domains/supply-chain/sbom.md, domains/supply-chain/dependency-management.md