CVE Analyzer
When to activate
When you need to assess one or more CVEs across your dependency tree or threat landscape:
- New CVE alerts arrive (NVD feed, Snyk, GitHub Security Advisory)
- Prioritizing patching work for a service or library
- Evaluating whether a third-party package introduces unacceptable risk
- Deciding between upgrading a dependency or switching to an alternative
- Responding to a security disclosure that mentions specific CVE IDs
When NOT to use
- Active exploitation in production: If a live system is already compromised, delegate to incident response first; CVE analysis is a post-incident or preventive activity
- Zero-day or unconfirmed exploits: This skill assumes CVE records with severity scores and patch information are available; if the vulnerability is not yet in NVD or CVE databases, escalate to a security researcher
- Legal/compliance disputes: If you need to argue a compliance exemption or liability question, involve legal/policy teams — CVE analysis is technical, not binding for regulatory decisions
- Incomplete vulnerability data: If the CVE ID is malformed or doesn't exist in public databases, verify the source before proceeding
Instructions
1. Gather CVE Information
Use WebSearch to fetch the latest details from authoritative sources:
- NVD (nvd.nist.gov): Official US government CVE database — includes CVSS scores, CWE mappings, and patch references
- CVE.ORG (cve.mitre.org): Authoritative CVE records, often with less detail than NVD
- Vendor advisories: Search the affected vendor's security page (e.g., Apache, Django, Node.js, Go) for official patches and timelines
For each CVE, extract:
- ID: CVE-YYYY-NNNNN format
- CVSS v3.1 score (prefer v3.1 over v2; 0–10 scale)
- Affected versions: Exact version ranges vulnerable to the issue
- Fixed version: When was it patched?
- CWE category: Weakness type (e.g., CWE-79 for XSS, CWE-89 for SQL injection)
- Public exploits: Are public PoCs available? (CISA Known Exploited Vulnerabilities list is authoritative)
- Patch status: Is the vendor actively supporting the affected versions?
2. Assess Severity and Context
Score each CVE by impact to your stack:
CVSS Base Score (technical severity):
- 9.0–10.0: Critical — patch immediately (hours to 1 day)
- 7.0–8.9: High — patch within 1–2 weeks
- 5.0–6.9: Medium — patch within 30 days; may defer if mitigations exist
- 3.0–4.9: Low — patch in next routine update
- 0.0–2.9: Minimal — monitor but not urgent
Contextual multipliers:
- Exploitability: Is public exploit code available? (increases urgency 2× for critical/high)
- Exposure: Is the vulnerable component internet-facing or trusted-network-only?
- Wormable vs. requires user action: Network-propagating worms (Exploitability=Network, User Interaction=None) are more urgent
- Patch availability: If vendor is no longer supporting the version (EOL), elevation is required (plan upgrade or replace)
- Workaround: Can you disable the feature or add WAF/network filtering in the interim?
3. Identify Affected Dependencies
Search your codebase (or dependency tree) for:
- Direct dependencies on the vulnerable package
- Transitive (nested) dependencies — use package manager query tools (e.g.,
npm ls <package>, pip show <package>)
- Version overlap: Is your lock file (package-lock.json, poetry.lock, go.sum) pinned to a vulnerable version?
Output a table:
| Dependency |
Current Version |
Vulnerable Versions |
Status |
libfoo |
2.1.0 |
< 2.3.0 |
Vulnerable |
bar |
1.5.1 |
1.5.0–1.5.2 |
Vulnerable |
4. Evaluate Patch Readiness
For each vulnerable dependency:
- Patch available? Check the vendor's changelog or GitHub releases — is there a patched version?
- Breaking changes? Does the patch require code changes (major version bump, API deprecation)?
- Transitive blocker? Are other dependencies pinned to versions incompatible with the patch?
- CI/CD readiness? Can you test the patch in staging within 1–2 days?
5. Generate Recommendations
Rank options by risk and effort:
Option A: Patch in place
- Upgrade to the fixed version (or next stable release)
- Plan: Create a branch, update lock file, run full test suite, deploy to staging for 24–48 hours, merge and release
- Timeline: 3–5 days for low-risk patches; 2–4 weeks for major version bumps
Option B: Workaround (temporary)
- Disable the vulnerable feature (e.g., disable auto-update in a package, disable file upload if RCE is via uploads)
- Add network/WAF rules to block exploit patterns
- Suitable for: High CVSS with critical patches not yet available, or patching blocked by transitive dependencies
- Timeline: 1–2 days; review effectiveness weekly
Option C: Switch library
- Replace the vulnerable package with a maintained alternative (if available)
- Effort: Medium to High (requires code changes, testing, potential API adaptation)
- Suitable for: EOL packages, repeated critical CVEs in unmaintained libraries, or blocking dependency chains
Option D: Accept and monitor
- Leave unpatched if CVSS < 4.0 and exploitability is low (no public PoC, requires local access)
- Document the decision with a security note in code (e.g., inline comment linking to CVE)
- Suitable for: Low-severity issues in trusted components with mitigations already in place
- Timeline: Patch in next quarterly release
6. Output Summary
Provide a structured report:
CVE Batch Analysis — [Date]
===============================================
CVE-2024-XXXXX: Remote Code Execution in libfoo
CVSS: 9.2 (Critical)
Affected: libfoo < 2.3.0
Current: 2.1.0 (VULNERABLE)
Fixed in: 2.3.0 ✓ Available
Public PoC: Yes (CISA Known Exploited list)
Recommendation: Patch immediately to 2.3.0
Effort: Low (no breaking changes, already tested in staging)
Timeline: Merge by [date]
---
CVE-2024-YYYYY: XSS via User Input in bar
CVSS: 5.3 (Medium)
Affected: bar 1.5.0–1.5.2
Current: 1.5.1 (VULNERABLE)
Fixed in: 1.5.3 ✓ Available
Public PoC: No
Workaround: Input sanitization already in place via [library X]
Recommendation: Patch within 30 days; no immediate action required
Effort: Low
Timeline: Next quarterly release OK
---
[Dependency graph diagram, if needed]
Example
Scenario: Your team uses express@4.17.1 in a Node.js microservice. A critical RCE CVE is disclosed (CVE-2024-12345) affecting Express < 4.19.0.
Process:
Gather: WebSearch "CVE-2024-12345 express" → Find NVD entry: CVSS 9.8, RCE via middleware bypass, public exploit available, fixed in 4.19.0.
Assess: CVSS 9.8 + public PoC + internet-facing service = Critical, patch today. No mitigations possible.
Check dependencies: Run npm ls express → 4.17.1 is in use; no transitive blockers. Pinned in package-lock.json.
Patch readiness: Express 4.19.0 released 1 week ago, no breaking changes in changelog. Minor security patches only.
Recommend: Upgrade to 4.19.0, test in staging (4 hours), deploy to production (1 hour).
Output:
CVE-2024-12345: Express Middleware RCE
CVSS: 9.8 (Critical)
Current: 4.17.1 → Fixed in 4.19.0 ✓ Available
Patch effort: Low (no API changes)
Recommendation: Merge patch PR within 2 hours; deploy to prod immediately
Tools and Resources
- NVD Query:
https://nvd.nist.gov/vuln/detail/CVE-YYYY-NNNNN
- CISA Exploited Vulnerabilities List: Track real-world exploitation of CVEs
- Snyk Database:
https://snyk.io/vuln/ — includes remediation steps for specific libraries
- GitHub Security Advisories:
https://github.com/advisories — filtered by ecosystem (npm, pip, etc.)
- Package manager queries:
- Node.js:
npm audit, npm ls <package>
- Python:
pip show <package>, safety check
- Go:
go list -m all, govulncheck ./...
Notes
- Always verify urgency context: A critical CVE in a transitive dependency you don't use directly is lower priority than a high CVSS in your main app
- Track decision rationale: Document why you chose patch, workaround, or accept — helps with future audits
- Automate where possible: Use GitHub Dependabot, Snyk, or equivalent for continuous monitoring
1---2name: cve-analyzer3description: CVE Analyzer4---5# CVE Analyzer67## When to activate89When you need to assess one or more CVEs across your dependency tree or threat landscape:10- New CVE alerts arrive (NVD feed, Snyk, GitHub Security Advisory)11- Prioritizing patching work for a service or library12- Evaluating whether a third-party package introduces unacceptable risk13- Deciding between upgrading a dependency or switching to an alternative14- Responding to a security disclosure that mentions specific CVE IDs1516## When NOT to use1718- **Active exploitation in production:** If a live system is already compromised, delegate to incident response first; CVE analysis is a post-incident or preventive activity19- **Zero-day or unconfirmed exploits:** This skill assumes CVE records with severity scores and patch information are available; if the vulnerability is not yet in NVD or CVE databases, escalate to a security researcher20- **Legal/compliance disputes:** If you need to argue a compliance exemption or liability question, involve legal/policy teams — CVE analysis is technical, not binding for regulatory decisions21- **Incomplete vulnerability data:** If the CVE ID is malformed or doesn't exist in public databases, verify the source before proceeding2223## Instructions2425### 1. Gather CVE Information26Use WebSearch to fetch the latest details from authoritative sources:27- **NVD (nvd.nist.gov):** Official US government CVE database — includes CVSS scores, CWE mappings, and patch references28- **CVE.ORG (cve.mitre.org):** Authoritative CVE records, often with less detail than NVD29- **Vendor advisories:** Search the affected vendor's security page (e.g., Apache, Django, Node.js, Go) for official patches and timelines3031For each CVE, extract:32- **ID:** CVE-YYYY-NNNNN format33- **CVSS v3.1 score** (prefer v3.1 over v2; 0–10 scale)34- **Affected versions:** Exact version ranges vulnerable to the issue35- **Fixed version:** When was it patched?36- **CWE category:** Weakness type (e.g., CWE-79 for XSS, CWE-89 for SQL injection)37- **Public exploits:** Are public PoCs available? (CISA Known Exploited Vulnerabilities list is authoritative)38- **Patch status:** Is the vendor actively supporting the affected versions?3940### 2. Assess Severity and Context41Score each CVE by impact to your stack:4243**CVSS Base Score (technical severity):**44- 9.0–10.0: Critical — patch immediately (hours to 1 day)45- 7.0–8.9: High — patch within 1–2 weeks46- 5.0–6.9: Medium — patch within 30 days; may defer if mitigations exist47- 3.0–4.9: Low — patch in next routine update48- 0.0–2.9: Minimal — monitor but not urgent4950**Contextual multipliers:**51- **Exploitability:** Is public exploit code available? (increases urgency 2× for critical/high)52- **Exposure:** Is the vulnerable component internet-facing or trusted-network-only?53- **Wormable vs. requires user action:** Network-propagating worms (Exploitability=Network, User Interaction=None) are more urgent54- **Patch availability:** If vendor is no longer supporting the version (EOL), elevation is required (plan upgrade or replace)55- **Workaround:** Can you disable the feature or add WAF/network filtering in the interim?5657### 3. Identify Affected Dependencies58Search your codebase (or dependency tree) for:59- Direct dependencies on the vulnerable package60- Transitive (nested) dependencies — use package manager query tools (e.g., `npm ls <package>`, `pip show <package>`)61- Version overlap: Is your lock file (package-lock.json, poetry.lock, go.sum) pinned to a vulnerable version?6263Output a table:6465| Dependency | Current Version | Vulnerable Versions | Status |66|---|---|---|---|67| `libfoo` | 2.1.0 | < 2.3.0 | Vulnerable |68| `bar` | 1.5.1 | 1.5.0–1.5.2 | Vulnerable |6970### 4. Evaluate Patch Readiness71For each vulnerable dependency:72- **Patch available?** Check the vendor's changelog or GitHub releases — is there a patched version?73- **Breaking changes?** Does the patch require code changes (major version bump, API deprecation)?74- **Transitive blocker?** Are other dependencies pinned to versions incompatible with the patch?75- **CI/CD readiness?** Can you test the patch in staging within 1–2 days?7677### 5. Generate Recommendations78Rank options by risk and effort:7980**Option A: Patch in place**81- Upgrade to the fixed version (or next stable release)82- Plan: Create a branch, update lock file, run full test suite, deploy to staging for 24–48 hours, merge and release83- Timeline: 3–5 days for low-risk patches; 2–4 weeks for major version bumps8485**Option B: Workaround (temporary)**86- Disable the vulnerable feature (e.g., disable auto-update in a package, disable file upload if RCE is via uploads)87- Add network/WAF rules to block exploit patterns88- Suitable for: High CVSS with critical patches not yet available, or patching blocked by transitive dependencies89- Timeline: 1–2 days; review effectiveness weekly9091**Option C: Switch library**92- Replace the vulnerable package with a maintained alternative (if available)93- Effort: Medium to High (requires code changes, testing, potential API adaptation)94- Suitable for: EOL packages, repeated critical CVEs in unmaintained libraries, or blocking dependency chains9596**Option D: Accept and monitor**97- Leave unpatched if CVSS < 4.0 and exploitability is low (no public PoC, requires local access)98- Document the decision with a security note in code (e.g., inline comment linking to CVE)99- Suitable for: Low-severity issues in trusted components with mitigations already in place100- Timeline: Patch in next quarterly release101102### 6. Output Summary103Provide a structured report:104105```106CVE Batch Analysis — [Date]107===============================================108109CVE-2024-XXXXX: Remote Code Execution in libfoo110CVSS: 9.2 (Critical)111Affected: libfoo < 2.3.0112Current: 2.1.0 (VULNERABLE)113Fixed in: 2.3.0 ✓ Available114Public PoC: Yes (CISA Known Exploited list)115Recommendation: Patch immediately to 2.3.0116Effort: Low (no breaking changes, already tested in staging)117Timeline: Merge by [date]118119---120121CVE-2024-YYYYY: XSS via User Input in bar122CVSS: 5.3 (Medium)123Affected: bar 1.5.0–1.5.2124Current: 1.5.1 (VULNERABLE)125Fixed in: 1.5.3 ✓ Available126Public PoC: No127Workaround: Input sanitization already in place via [library X]128Recommendation: Patch within 30 days; no immediate action required129Effort: Low130Timeline: Next quarterly release OK131132---133134[Dependency graph diagram, if needed]135```136137## Example138139**Scenario:** Your team uses `express@4.17.1` in a Node.js microservice. A critical RCE CVE is disclosed (CVE-2024-12345) affecting Express < 4.19.0.140141**Process:**1421431. **Gather:** WebSearch "CVE-2024-12345 express" → Find NVD entry: CVSS 9.8, RCE via middleware bypass, public exploit available, fixed in 4.19.0.1441452. **Assess:** CVSS 9.8 + public PoC + internet-facing service = **Critical, patch today.** No mitigations possible.1461473. **Check dependencies:** Run `npm ls express` → 4.17.1 is in use; no transitive blockers. Pinned in package-lock.json.1481494. **Patch readiness:** Express 4.19.0 released 1 week ago, no breaking changes in changelog. Minor security patches only.1501515. **Recommend:** Upgrade to 4.19.0, test in staging (4 hours), deploy to production (1 hour).1521536. **Output:**154 ```155 CVE-2024-12345: Express Middleware RCE156 CVSS: 9.8 (Critical)157 Current: 4.17.1 → Fixed in 4.19.0 ✓ Available158 Patch effort: Low (no API changes)159 Recommendation: Merge patch PR within 2 hours; deploy to prod immediately160 ```161162---163164## Tools and Resources165166- **NVD Query:** `https://nvd.nist.gov/vuln/detail/CVE-YYYY-NNNNN`167- **CISA Exploited Vulnerabilities List:** Track real-world exploitation of CVEs168- **Snyk Database:** `https://snyk.io/vuln/` — includes remediation steps for specific libraries169- **GitHub Security Advisories:** `https://github.com/advisories` — filtered by ecosystem (npm, pip, etc.)170- **Package manager queries:**171 - Node.js: `npm audit`, `npm ls <package>`172 - Python: `pip show <package>`, `safety check`173 - Go: `go list -m all`, `govulncheck ./...`174175---176177## Notes178179- **Always verify urgency context:** A critical CVE in a transitive dependency you don't use directly is lower priority than a high CVSS in your main app180- **Track decision rationale:** Document why you chose patch, workaround, or accept — helps with future audits181- **Automate where possible:** Use GitHub Dependabot, Snyk, or equivalent for continuous monitoring