MITRE ATT&CK technique mapping for a CVE or every entry in `.vulnetix/memory.yaml`. Use when planning detection coverage gaps, mapping a CVE to defender controls, building an executive heatmap of repo risk by tactic, or correlating with internal D3FEND counter-techniques.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add aibot88/sec_skill_store --skill attack-mapping --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Attack Mapping?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-attack-mapping)More formats (shields.io, HTML) on the badges page.
---
name: attack-mapping
description: 'MITRE ATT&CK technique mapping for a CVE or every entry in `.vulnetix/memory.yaml`. Use when planning detection coverage gaps, mapping a CVE to defender controls, building an executive heatmap of repo risk by tactic, or correlating with internal D3FEND counter-techniques.'
argument-hint: "[<vuln-id>] | [--all-tracked]"
user-invocable: true
allowed-tools: Bash, Read, Glob, Grep
model: sonnet
triggers:
- "map to ATT&CK"
- "attack mapping"
- "techniques used"
- "mitre"
chain:
- vuln
- detection-rules
outputBudget: short
cooldown: per-session
---
# Vulnetix ATT&CK Mapping Skill
## Use when
- You need to know which ATT&CK techniques a CVE enables (Initial Access? Execution? Persistence?).
- Building an executive heatmap: which tactics dominate this repo's risk profile.
- Mapping current detection coverage gaps via ATT&CK → D3FEND.
- Correlating multiple CVEs to a shared technique chain (e.g. T1190 + T1059).
- Producing input for a purple-team exercise.
## Don't use for
- Generating detection rules for the IDS — use `/vulnetix:detection-rules`.
- Single-CVE deep-dive — use `/vulnetix:exploits`.
- IOC pivots — use `/vulnetix:ioc-pivot`.
## Conventions
This skill follows [`_lib/contract.md`](../_lib/contract.md): the Vulnetix CLI is auto-installed by hooks, `.vulnetix/capabilities.yaml` is always present, every `vulnetix vdb` call is piped through a verified `jq` filter from [`_lib/jq/`](../_lib/jq/), independent calls run in parallel as concurrent Bash tool calls, and trailing follow-ups are limited to one line. See the contract for output style, memory write rules, and cooldowns.
Produces an ATT&CK technique view of repo risk. Run with a single vuln-id for a focused mapping, or `--all-tracked` to roll up every entry in `.vulnetix/memory.yaml`.
## Step 1: Decide mode
If `$ARGUMENTS` matches a vuln-id pattern → single mode. Else if it contains `--all-tracked` → roll-up mode reading every `vulnerabilities.*` entry in `.vulnetix/memory.yaml` (skip those with status `not_affected` or `fixed`).
## Step 2: Fetch ATT&CK data per vuln
```bash
vulnetix vdb attack-techniques "$VULN_ID" -o json | jq -f "${CLAUDE_PLUGIN_ROOT}/skills/_lib/jq/attack-techniques.jq"
```
Capture: technique IDs (T####), tactic, sub-technique, observed-in-wild count.
## Step 3: Render
**Single mode** — table of techniques with tactic + observation count. Mermaid flowchart from kill-chain tactic → technique → vuln.
**Roll-up mode** — a heatmap-style table:
```
| Technique | Tactic | Vuln count | Top affected packages |
|-----------|--------|-----------|----------------------|
| T1190 | Initial Access | 5 | log4j-core, struts2 |
```
Ranking: by vuln count descending. Top 20 only; total in summary footer.
## Step 4: Suggested follow-ups
- For high-frequency techniques → fetch detection rules for the top vulns: `/vulnetix:detection-rules <id>`
- For Initial Access / Execution tactics → `/vulnetix:soc-triage --severity critical`
## Memory update
Append `event: attack-mapping` with technique IDs to each touched vuln entry.
## Edge cases & gotchas
- `vdb attack-techniques <id>` (bare) returns help text. Use `vdb attack-techniques get <id>`.
- `vdb attack-techniques get <id> -o json` writes to file `json`; use `-o /dev/stdout`.
- `.attackTechniques[]` is OFTEN EMPTY for older CVEs (pre-2024 enrichment gap) — empty array does not mean "no techniques associated", it means "no mapping captured in this corpus".
- `--all-tracked` mode reads memory.yaml and can be slow for repos with 100+ tracked vulns; one network round-trip per vuln.
- Technique names (`name` field) are sometimes null in the response; the jq filter falls back gracefully.
- D3FEND counter-techniques are referenced but not inlined — the skill links to the MITRE D3FEND page rather than embedding the full counter-technique catalog.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!