Vulnetix Exploit Analysis Skill
This skill analyzes exploit intelligence for a specific vulnerability (CVE, GHSA, etc.) and assesses its impact against the current repository. This skill does not modify application code — it only updates .vulnetix/memory.yaml to track findings. Use /vulnetix:fix for remediation.
Output & Analysis Guidelines
Primary output format: Markdown. All reports, tables, assessments, and evidence summaries MUST be presented as formatted markdown text directly — never generate scripts or programs to produce output that can be expressed as markdown.
Visual data — use Mermaid diagrams to display data visually when it aids comprehension. Mermaid renders natively in markdown and requires no external tools. Use it for:
- Attack path / kill chain visualization →
graph TD - CWSS factor breakdown →
pieorquadrantChart - Exploit timeline (discovery dates, PoC releases) →
timeline - Threat model reachability →
flowchart(dependency → vulnerable code → exposure) - Priority comparison across multiple vulns →
barorxychart-beta
Example — CWSS factor breakdown:
```mermaid
pie title CWSS Priority Factors (Score: 87.5)
"Technical Impact (100)" : 25
"Exploitability (95)" : 25
"Exposure (100)" : 15
"Complexity (90)" : 15
"Repo Relevance (70)" : 20
```
Example — attack path:
```mermaid
graph LR
A[Internet] -->|network| B[Web App]
B -->|imports| C[log4j-core 2.14.1]
C -->|JNDI lookup| D[RCE]
style C fill:#f66,stroke:#333
style D fill:#f00,color:#fff
```
If uv is available, richer visualizations can be generated with Python (matplotlib, plotly) and saved to .vulnetix/:
command -v uv &>/dev/null && uv run --with matplotlib python3 -c '
import matplotlib.pyplot as plt
# ... generate chart ...
plt.savefig(".vulnetix/chart.png", dpi=150, bbox_inches="tight")
'
When Python charts are generated, display them inline and keep the Mermaid version as a text fallback.
Data processing — tooling cascade (strict order):
- jq / yq + bash builtins (preferred) —
jqfor JSON extraction/filtering (API responses, CycloneDX SBOMs),yqfor YAML (memory file reads). Pipe tohead,tail,cut,sed,grep,sort,uniq,wcfor shaping. - uv (for complex analysis or charts) — If CWSS scoring, statistical aggregation, or visualization beyond Mermaid are needed, check
uvfirst:command -v uv &>/dev/null && uv run --with pandas,matplotlib python3 -c '...' - python3 stdlib (last resort) — Only if
uvis unavailable. Usejson,csv,collections,statistics,mathmodules — no pip dependencies:command -v python3 &>/dev/null && python3 -c 'import json, sys; ...'
Never assume any runtime is available — always check with command -v before use. If all programmatic tools are unavailable, perform CWSS calculations manually and present results as markdown with Mermaid diagrams.
CWE pattern matching (Step 5 grep commands for code analysis) uses the Grep tool directly — these are not data processing and are exempt from this cascade.
Vulnerability Memory (.vulnetix/memory.yaml)
This skill reads and updates the .vulnetix/memory.yaml file in the repository root. This file is shared with /vulnetix:fix and /vulnetix:package-search and tracks all vulnerability encounters, threat models, priority scores, and user decisions across sessions.
Schema
The canonical schema is defined in /vulnetix:fix. This skill adds and maintains the threat_model and cwss fields on each vulnerability entry. The full per-vulnerability entry structure:
# .vulnetix/memory.yaml
# Auto-maintained by Vulnetix Claude Code Plugin
# Do not remove — tracks vulnerability decisions and fix history
schema_version: 1
vulnerabilities:
CVE-2021-44228: # Primary vuln ID (key)
aliases: # Other IDs for the same vuln
- GHSA-jfh8-c2jp-5v3q
package: log4j-core
ecosystem: maven
discovery:
date: "2024-01-15T10:30:00Z" # ISO 8601 UTC
source: manifest # manifest | lockfile | sbom | scan | user | hook
file: pom.xml # The manifest where it was found
sbom: .vulnetix/scans/pom.xml.cdx.json # CycloneDX v1.7 SBOM (when produced by scan/hook)
versions:
current: "2.14.1"
current_source: "lockfile: pom.xml"
fixed_in: "2.17.1"
fix_source: "registry: Maven Central"
severity: critical # critical | high | medium | low | unknown
safe_harbour: 0.82 # 0.00-1.00 confidence score
status: affected # VEX: not_affected | affected | fixed | under_investigation
justification: null # VEX justification (for not_affected)
action_response: null # VEX action (for affected)
threat_model: # Populated by /vulnetix:exploits
techniques: # MITRE ATT&CK technique IDs (internal reference)
- T1190
- T1059
tactics: # Developer-friendly descriptions (shown to user)
- "Attackable from the internet"
- "Can run arbitrary commands"
attack_vector: network # network | local | adjacent | physical
attack_complexity: low # low | high
privileges_required: none # none | low | high
user_interaction: none # none | required
reachability: direct # direct | transitive | not-found | unknown
exposure: public-facing # public-facing | internal | local-only | unknown
pocs: # PoC sources (static analysis only, never executed)
- url: "https://exploit-db.com/exploits/12345"
source: exploitdb
type: poc # poc | exploit-framework | article
local_path: ".vulnetix/pocs/CVE-2021-44228/exploit_12345.py"
fetched_date: "2024-01-15T10:35:00Z"
verified: true
analysis: "RCE via JNDI lookup injection, network vector, no auth required"
cwss: # CWSS-derived priority scoring
score: 87.5 # 0-100 composite priority score
priority: P1 # P1 | P2 | P3 | P4
factors:
technical_impact: 100 # 0-100 from CVSS impact / CWE consequence
exploitability: 95 # 0-100 from EPSS, exploit availability
exposure: 100 # 0-100 from attack vector + repo deployment
complexity: 90 # 0-100 inverted (higher = easier to exploit)
repo_relevance: 70 # 0-100 from dependency relationship, reachability
decision:
choice: investigating # See Decision Values below
reason: "Exploit analysis in progress"
date: "2024-01-15T10:30:00Z"
history: # Append-only event log
- date: "2024-01-15T10:30:00Z"
event: discovered
detail: "Found via /vulnetix:exploits CVE-2021-44228"
- date: "2024-01-15T10:35:00Z"
event: exploit-analysis
detail: "3 public exploits, EPSS 0.97, Metasploit module, CISA KEV listed. CWSS 87.5 (P1)."
MITRE ATT&CK Mapping
Use ATT&CK technique IDs internally in threat_model.techniques. Always communicate to the user using the developer-friendly language in threat_model.tactics. Never surface ATT&CK IDs, tactic names, or technique names to the user — those are internal metadata only.
| ATT&CK ID | ATT&CK Name | Developer Language (store in tactics) |
|---|---|---|
| T1190 | Exploit Public-Facing Application | "Attackable from the internet — web app or API is the entry point" |
| T1195.001 | Supply Chain: Compromise Software Depende |