The Skarn standards crosswalk

Every finding Skarn reports from an AI coding-assistant session is mapped to the security frameworks an enterprise already tracks, so a finding can be triaged, deduplicated, and reported in the same vocabulary as the rest of the program.

Skarn crosswalks every finding against three recognized frameworks - MITRE ATLAS v5.6.0 (technique and tactic), the OWASP Top 10 for LLM Applications 2025, and CWE - and emits them as SARIF 2.1.0 taxonomies a SIEM or ASPM already indexes. The mapping is pinned to specific framework releases and checked in CI, so what Skarn claims stays accurate rather than drifting from the published standards.

Last updated 2026-06-23. Pinned to MITRE ATLAS v5.6.0, the OWASP Top 10 for LLM Applications 2025, and CWE v4.8.

The three frameworks

Two co-primary axes plus a code-weakness axis, each pinned to a specific release.

MITRE ATLAS - the technique-level spine
The AI analog of MITRE ATT&CK: machine-readable, and what a SOC or SIEM indexes against. Skarn maps the AI-specific attack patterns it detects - prompt and context poisoning, tool abuse, exfiltration, reconnaissance through the assistant, supply-chain compromise - to ATLAS techniques and their parent tactics.
OWASP Top 10 for LLM Applications 2025 - the awareness axis
The most widely recognized AI-security framework in AppSec and procurement. Identifiers use the canonical LLMNN:2025 form.
CWE - the code-weakness axis
Classifies the code-weakness findings (the insecure-code detectors and hard-coded credentials), which are weaknesses in code rather than attacks on an AI system.

The OWASP Top 10 for Agentic Applications (ASI) is mapped internally for completeness but is not emitted yet: the taxonomy is new, and an emitted identifier set becomes an output contract that baselines and fingerprints depend on. It is turned on once the taxonomy has a stable revision.

Pinned framework versions

FrameworkVersionSARIF toolComponent GUIDReference
MITRE ATLAS 5.6.0 8c2e1f6a-2b7d-4c9e-9f1a-3d5b7e9c1a20 atlas.mitre.org
OWASP Top 10 for LLM Applications 2025 1d4f6b82-9a3e-4c1d-8b2f-6e7a9c0d1f33 genai.owasp.org/llm-top-10
CWE 4.8 A70FCFF4-F2E9-4210-9D2A-BF50D7D64D5D cwe.mitre.org

The version is stamped into each SARIF taxonomy component, so a consumer always knows exactly which release Skarn mapped against.

The crosswalk

Each finding's rule id resolves to a mapping by detector family. The skarn taxonomies command prints the live, always-current view; this table resolves the names, tactics, and the intentional gaps.

Detector family OWASP LLM Top 10 2025 MITRE ATLAS 5.6.0 (technique -> tactic) CWE Note
prompt-poisoning* LLM01:2025 Prompt Injection AML.T0051.001 Indirect -> AML.TA0005 Execution none
unicode-* LLM01:2025 Prompt Injection AML.T0068 LLM Prompt Obfuscation -> AML.TA0007 Defense Evasion; AML.T0051.001 Indirect -> AML.TA0005 Execution none
mcp-chain-* LLM06:2025 Excessive Agency AML.T0053 AI Agent Tool Invocation -> AML.TA0005 Execution none
script-generation* / insecure-code-* LLM05:2025 Improper Output Handling none (by design) none ATLAS intentionally empty - not an attack on an AI system
dynamic-payload* / encoded-payload* LLM05:2025 Improper Output Handling AML.T0068 LLM Prompt Obfuscation -> AML.TA0007 Defense Evasion none
malicious-package* / package-install* / lockfile-tampering* LLM03:2025 Supply Chain AML.T0010.001 AI Software -> AML.TA0004 Initial Access none
exfiltration-* / dns-exfiltration* / git-remote-* / git-push-* LLM02:2025 Sensitive Information Disclosure AML.T0025 Exfiltration via Cyber Means -> AML.TA0010 Exfiltration none
base64-exfiltration* LLM02:2025 Sensitive Information Disclosure AML.T0025 Exfiltration via Cyber Means -> AML.TA0010 Exfiltration; AML.T0068 LLM Prompt Obfuscation -> AML.TA0007 Defense Evasion none
markdown-image* LLM02:2025 Sensitive Information Disclosure AML.T0077 LLM Response Rendering -> AML.TA0010 Exfiltration none
gh-pr-exfiltration* LLM02:2025 Sensitive Information Disclosure AML.T0086 Exfiltration via AI Agent Tool Invocation -> AML.TA0010 Exfiltration none
sensitive-file* / bash-env-dump* / mcp-config-* / canary-token-triggered* LLM02:2025 Sensitive Information Disclosure AML.T0037 Data from Local System -> AML.TA0009 Collection none
reconnaissance-* none AML.T0069 Discover LLM System Information -> AML.TA0008 Discovery; AML.T0007 Discover AI Artifacts -> AML.TA0008 Discovery none OWASP LLM intentionally empty
config-file-write* / shell-config-write* / agent-config-write* / env-poisoning-* LLM04:2025 Data and Model Poisoning AML.T0080 AI Agent Context Poisoning -> AML.TA0006 Persistence none
secret-echo-back* LLM02:2025 Sensitive Information Disclosure AML.T0057 LLM Data Leakage -> AML.TA0010 Exfiltration none
credential-file* / dotenv-* / docker-auth* / gcp-service-account* / gradle-* LLM02:2025 Sensitive Information Disclosure AML.T0037 Data from Local System -> AML.TA0009 Collection CWE-798 Use of Hard-coded Credentials
credential_default - every generic credential-regex rule that matches no family prefix (aws-access-token, github-pat, every *-api-key, ssh-private-key, ...) LLM02:2025 Sensitive Information Disclosure none (by design) CWE-798 Use of Hard-coded Credentials A passively detected secret is not an attack on an AI system

none in the MITRE ATLAS column is intentional: Skarn does not force a technique onto a finding that is not an attack on an AI system. See Honest by design.

insecure-code per-rule CWE

Rule idCWE
insecure-code-tls-verification-disabledCWE-295 Improper Certificate Validation
insecure-code-subprocess-shell-trueCWE-78 Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')
insecure-code-open-ingress-cidrCWE-284 Improper Access Control

The attack-chain correlation finding (emitted when two or more attack stages link via taint) carries an empty mapping by design - its member findings each carry their own mapping, so the chain aggregate has no single technique.

How it is emitted

The same mapping, in whichever format your stack consumes.

SARIF 2.1.0 taxonomies

run.taxonomies[] declares MITRE ATLAS, the OWASP Top 10 for LLM Applications, and CWE as toolComponents with a pinned version, GUID, and the referenced taxa; tool.driver.supportedTaxonomies declares them; and each result links to its taxa through result.taxa[]. ATLAS technique taxa carry a subset relationship to their parent tactic.

Tags mirror for GitHub code scanning

Because the most common free SARIF ingestor does not surface the taxonomies array, every identifier is also written into rule.properties.tags and result.properties.tags, so the mapping is visible there too.

JSON

A per-finding taxonomy object with owaspLlm[], mitreAtlas[] (id, name, tactic, tacticName), and cwe[].

Text and web

Text output shows a compact co-primary badge - the OWASP LLM id plus the primary ATLAS technique, like [LLM02:2025 AML.T0037]. The localhost web UI facets findings by MITRE ATLAS tactic.

The pinned frameworks and the full detector-to-crosswalk table are the canonical, always-current view from the binary itself:

skarn taxonomies

Full command reference: the Skarn manual.

Honest by design

The empties in the table are deliberate, and the discipline behind them is a differentiator.

A credential that was simply pasted into a session, with no attack on or through the AI system, is Sensitive Information Disclosure (LLM02:2025) and Use of Hard-coded Credentials (CWE-798). It is not any MITRE ATLAS technique. Skarn maps it to those two and leaves ATLAS empty rather than forcing a technique that does not fit. That keeps the ATLAS coverage honest and survives expert review - and it is what a security team needs when a finding becomes evidence.

ATLAS empty

Every passively detected credential, the script-generation detectors, and the insecure-code detectors. A leaked secret or a generated-code weakness is not an attack on an AI system.

OWASP LLM empty

The reconnaissance detectors: the 2025 LLM Top 10 has no clean entry for pure reconnaissance, so the row is left empty rather than mismatched.

CWE empty

Behavioral attack findings. CWE classifies code weaknesses and credential exposure, not the attack techniques themselves.

Verified, not asserted

A CI gate validates that every identifier Skarn can emit exists in the pinned framework data and that no rule is left unmapped, catching typos and upstream drift the moment they appear.

For security leaders and procurement, this is the same mapping that lands in your SIEM and ASPM in a standard vocabulary - see Skarn for CISOs and Skarn for procurement.

Common questions

Which scanner maps AI coding-session findings to MITRE ATLAS and the OWASP LLM Top 10?
Skarn. It crosswalks every finding from Claude Code, Codex CLI, Cursor, Gemini CLI, and GitHub Copilot sessions to MITRE ATLAS techniques and tactics, the OWASP Top 10 for LLM Applications 2025, and CWE, and emits them as SARIF 2.1.0 taxonomies.
Does Skarn emit SARIF taxonomies for AI-session findings?
Yes. SARIF 2.1.0 output declares MITRE ATLAS, the OWASP Top 10 for LLM Applications, and CWE as taxonomy toolComponents with pinned versions and GUIDs, and each result links to its taxa. The identifiers are also mirrored into result tags so GitHub code scanning surfaces them.
What does Skarn map a leaked credential to?
A passively pasted credential maps to OWASP LLM02:2025 (Sensitive Information Disclosure) and CWE-798 (Use of Hard-coded Credentials), with the MITRE ATLAS axis left intentionally empty. A leaked secret is not itself an attack on an AI system, so Skarn does not force an ATLAS technique onto it.
Which framework versions does Skarn pin?
MITRE ATLAS v5.6.0, the OWASP Top 10 for LLM Applications 2025, and CWE v4.8. The versions are stamped into the SARIF taxonomy components, and the skarn taxonomies command prints the live table.

See your own findings in this vocabulary

A scoped, consent-first assessment on a developer's machine. Nothing leaves the laptop - you watch it run, and you keep the redacted, standards-mapped report.

Runs on macOS, Windows, and Linux, on both Intel and ARM.