Four parallel taxonomy maps — LLM, ASI (agentic), AST (skills) and MCP — each keyed by the same 16 scanner prefixes, so a finding can be placed in whichever taxonomy a report is written against. Proven, not transcribed: each exported object was rebuilt from the commons JSON alone and compared against the imported dump module — 4/4 identical on keys, order, values and empty arrays. The shared 16-key order was verified across all eight objects rather than assumed, and the count is the counted one (the dump's own aside says 14). Empty arrays are data and are preserved as arrays: agentic TRG/AST, skills WFL/SIG, mcp WFL/TRG/SIG/AST all mean "deliberately mapped to nothing", not "gap to fill". Recorded as an open question in the file rather than papered over: the dump does not state which EDITION of each taxonomy the codes belong to. OWASP's LLM Top 10 was renumbered between editions — LLM06 is Excessive Agency in the 2025 list, with earlier entries consolidated and LLM07/LLM08 newly added — so a bare LLM06 does not identify a risk. Two runtimes can match this map perfectly and still disagree about what a finding means, which is the exact failure this repository exists to prevent. taxonomy_name is left null rather than guessed; the question goes to llm-security. Scanner prefix meanings were not supplied and are reproduced as opaque keys. Verification log in docs/extraction-plan.md. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FaYqid3mejFmd9ZHsiHgp3
352 lines
8.2 KiB
JSON
352 lines
8.2 KiB
JSON
{
|
|
"version": "0.1.0",
|
|
"id": "owasp-map",
|
|
"description": "Finding-id prefix to OWASP taxonomy codes, in four parallel maps. Every map is keyed by the same 16 scanner prefixes, so a finding carrying a prefix can be placed in whichever taxonomy a report is written against. An empty array means the seed implementation deliberately maps that prefix to nothing in that taxonomy - it is data, not a gap to fill.",
|
|
"$comment": "Extracted without behaviour change from llm-security/scanners/lib/severity.mjs (OWASP_MAP, OWASP_AGENTIC_MAP, OWASP_SKILLS_MAP, OWASP_MCP_MAP), delivered as operator dump 2/2 through the local coord mailbox on 2026-08-09. The dump states that a fallback map inside one of llm-security's own agent definitions covers only part of the prefix set; that is known drift in the consumer and is explicitly NOT inherited here. The maps below are the complete 16-prefix set from severity.mjs.",
|
|
"provenance": {
|
|
"source_repo": "llm-security",
|
|
"source_files": [
|
|
"scanners/lib/severity.mjs"
|
|
],
|
|
"source_exports": [
|
|
"OWASP_MAP",
|
|
"OWASP_AGENTIC_MAP",
|
|
"OWASP_SKILLS_MAP",
|
|
"OWASP_MCP_MAP"
|
|
],
|
|
"source_delivery": "operator dump 2/2, coord message from llm-security, 2026-08-09",
|
|
"source_commit": "unknown - not supplied with the dump",
|
|
"verified": "differentially, against the dump",
|
|
"evidence_limits": [
|
|
"The dump is a transcription of the source module, not the module file itself. The checks recorded for this file prove that this JSON agrees with the DUMP; dump-to-module fidelity is llm-security's assertion, not a result reproduced here.",
|
|
"What each scanner prefix MEANS was not supplied. The prefixes are reproduced as opaque keys; no expansion of UNI, ENT, PRM and the rest is invented here.",
|
|
"Which EDITION of each taxonomy these codes belong to was not supplied. See open_questions - this is the one thing in this file a consumer can get wrong while matching it exactly."
|
|
]
|
|
},
|
|
"prefixes": {
|
|
"$comment": "The 16 finding-id prefixes, in source order. All four maps carry exactly these keys in exactly this order; verified, not assumed. Meanings were not supplied and are not invented - a consumer resolves a prefix against the producing scanner, not against this file.",
|
|
"keys": [
|
|
"UNI",
|
|
"ENT",
|
|
"PRM",
|
|
"DEP",
|
|
"TNT",
|
|
"GIT",
|
|
"NET",
|
|
"TFA",
|
|
"MCI",
|
|
"MEM",
|
|
"SCR",
|
|
"PST",
|
|
"WFL",
|
|
"TRG",
|
|
"SIG",
|
|
"AST"
|
|
],
|
|
"count": 16
|
|
},
|
|
"open_questions": [
|
|
{
|
|
"id": "taxonomy-edition-unstated",
|
|
"question": "Which edition of each OWASP taxonomy do these codes refer to?",
|
|
"why_it_matters": "OWASP's Top 10 for LLM Applications was renumbered between editions: in the 2025 edition LLM06 is Excessive Agency, and entries present in the earlier list were consolidated into other numbers, with System Prompt Leakage and Vector and Embedding Weaknesses added as LLM07 and LLM08. A bare code such as LLM06 therefore does not identify a risk on its own. Two runtimes can reproduce this map perfectly and still publish reports that disagree about what a finding means, which is precisely the failure this repository exists to prevent.",
|
|
"status": "open - reported to llm-security, to be decided where the maps are maintained",
|
|
"resolution_shape": "An edition or version string per taxonomy, recorded alongside code_prefix. Deliberately left null rather than guessed."
|
|
}
|
|
],
|
|
"taxonomies": {
|
|
"llm": {
|
|
"source_export": "OWASP_MAP",
|
|
"code_prefix": "LLM",
|
|
"taxonomy_name": null,
|
|
"codes_used": [
|
|
"LLM01",
|
|
"LLM02",
|
|
"LLM03",
|
|
"LLM06"
|
|
],
|
|
"unmapped_prefixes": [],
|
|
"map": {
|
|
"UNI": [
|
|
"LLM01"
|
|
],
|
|
"ENT": [
|
|
"LLM01",
|
|
"LLM03"
|
|
],
|
|
"PRM": [
|
|
"LLM06"
|
|
],
|
|
"DEP": [
|
|
"LLM03"
|
|
],
|
|
"TNT": [
|
|
"LLM01",
|
|
"LLM02"
|
|
],
|
|
"GIT": [
|
|
"LLM03"
|
|
],
|
|
"NET": [
|
|
"LLM02",
|
|
"LLM03"
|
|
],
|
|
"TFA": [
|
|
"LLM01",
|
|
"LLM02",
|
|
"LLM06"
|
|
],
|
|
"MCI": [
|
|
"LLM01",
|
|
"LLM02"
|
|
],
|
|
"MEM": [
|
|
"LLM01"
|
|
],
|
|
"SCR": [
|
|
"LLM03"
|
|
],
|
|
"PST": [
|
|
"LLM01",
|
|
"LLM06"
|
|
],
|
|
"WFL": [
|
|
"LLM02",
|
|
"LLM06"
|
|
],
|
|
"TRG": [
|
|
"LLM06"
|
|
],
|
|
"SIG": [
|
|
"LLM03",
|
|
"LLM02"
|
|
],
|
|
"AST": [
|
|
"LLM01",
|
|
"LLM02"
|
|
]
|
|
}
|
|
},
|
|
"agentic": {
|
|
"source_export": "OWASP_AGENTIC_MAP",
|
|
"code_prefix": "ASI",
|
|
"taxonomy_name": null,
|
|
"codes_used": [
|
|
"ASI01",
|
|
"ASI02",
|
|
"ASI03",
|
|
"ASI04",
|
|
"ASI05"
|
|
],
|
|
"unmapped_prefixes": [
|
|
"TRG",
|
|
"AST"
|
|
],
|
|
"map": {
|
|
"UNI": [
|
|
"ASI01"
|
|
],
|
|
"ENT": [
|
|
"ASI01",
|
|
"ASI04"
|
|
],
|
|
"PRM": [
|
|
"ASI02",
|
|
"ASI03"
|
|
],
|
|
"DEP": [
|
|
"ASI04"
|
|
],
|
|
"TNT": [
|
|
"ASI01",
|
|
"ASI05"
|
|
],
|
|
"GIT": [
|
|
"ASI04"
|
|
],
|
|
"NET": [
|
|
"ASI02",
|
|
"ASI05"
|
|
],
|
|
"TFA": [
|
|
"ASI01",
|
|
"ASI02",
|
|
"ASI05"
|
|
],
|
|
"MCI": [
|
|
"ASI01",
|
|
"ASI04"
|
|
],
|
|
"MEM": [
|
|
"ASI01",
|
|
"ASI02"
|
|
],
|
|
"SCR": [
|
|
"ASI04"
|
|
],
|
|
"PST": [
|
|
"ASI02",
|
|
"ASI03",
|
|
"ASI04",
|
|
"ASI05"
|
|
],
|
|
"WFL": [
|
|
"ASI04"
|
|
],
|
|
"TRG": [],
|
|
"SIG": [
|
|
"ASI04"
|
|
],
|
|
"AST": []
|
|
}
|
|
},
|
|
"skills": {
|
|
"source_export": "OWASP_SKILLS_MAP",
|
|
"code_prefix": "AST",
|
|
"taxonomy_name": null,
|
|
"codes_used": [
|
|
"AST01",
|
|
"AST02",
|
|
"AST03",
|
|
"AST04",
|
|
"AST05",
|
|
"AST06"
|
|
],
|
|
"unmapped_prefixes": [
|
|
"WFL",
|
|
"SIG"
|
|
],
|
|
"map": {
|
|
"UNI": [
|
|
"AST05"
|
|
],
|
|
"ENT": [
|
|
"AST02",
|
|
"AST05"
|
|
],
|
|
"PRM": [
|
|
"AST03"
|
|
],
|
|
"DEP": [
|
|
"AST06"
|
|
],
|
|
"TNT": [
|
|
"AST01",
|
|
"AST02"
|
|
],
|
|
"GIT": [
|
|
"AST06"
|
|
],
|
|
"NET": [
|
|
"AST02"
|
|
],
|
|
"TFA": [
|
|
"AST01",
|
|
"AST02",
|
|
"AST03"
|
|
],
|
|
"MCI": [
|
|
"AST01",
|
|
"AST02"
|
|
],
|
|
"MEM": [
|
|
"AST01",
|
|
"AST05"
|
|
],
|
|
"SCR": [
|
|
"AST06"
|
|
],
|
|
"PST": [
|
|
"AST01",
|
|
"AST03"
|
|
],
|
|
"WFL": [],
|
|
"TRG": [
|
|
"AST04"
|
|
],
|
|
"SIG": [],
|
|
"AST": [
|
|
"AST02"
|
|
]
|
|
}
|
|
},
|
|
"mcp": {
|
|
"source_export": "OWASP_MCP_MAP",
|
|
"code_prefix": "MCP",
|
|
"taxonomy_name": null,
|
|
"codes_used": [
|
|
"MCP01",
|
|
"MCP02",
|
|
"MCP03",
|
|
"MCP04",
|
|
"MCP05",
|
|
"MCP06",
|
|
"MCP07",
|
|
"MCP09",
|
|
"MCP10"
|
|
],
|
|
"unmapped_prefixes": [
|
|
"WFL",
|
|
"TRG",
|
|
"SIG",
|
|
"AST"
|
|
],
|
|
"map": {
|
|
"UNI": [
|
|
"MCP06"
|
|
],
|
|
"ENT": [
|
|
"MCP01",
|
|
"MCP06"
|
|
],
|
|
"PRM": [
|
|
"MCP02",
|
|
"MCP07"
|
|
],
|
|
"DEP": [
|
|
"MCP04"
|
|
],
|
|
"TNT": [
|
|
"MCP05",
|
|
"MCP06"
|
|
],
|
|
"GIT": [
|
|
"MCP04"
|
|
],
|
|
"NET": [
|
|
"MCP02",
|
|
"MCP10"
|
|
],
|
|
"TFA": [
|
|
"MCP03",
|
|
"MCP06"
|
|
],
|
|
"MCI": [
|
|
"MCP03",
|
|
"MCP06",
|
|
"MCP09"
|
|
],
|
|
"MEM": [
|
|
"MCP05",
|
|
"MCP06"
|
|
],
|
|
"SCR": [
|
|
"MCP04"
|
|
],
|
|
"PST": [
|
|
"MCP02",
|
|
"MCP07"
|
|
],
|
|
"WFL": [],
|
|
"TRG": [],
|
|
"SIG": [],
|
|
"AST": []
|
|
}
|
|
}
|
|
},
|
|
"totals": {
|
|
"taxonomies": 4,
|
|
"prefixes": 16,
|
|
"entries": 64
|
|
}
|
|
}
|