Correct eleven MITRE ATLAS technique citations - #59
Open
astrogilda wants to merge 1 commit into
Open
Conversation
Six rows carry a superseded label under a correct identifier, mostly from the rename that moved the matrix off "ML" wording. Five carry a correct, current label under an identifier belonging to a different technique. AML.T0022 appears in neither the current v6 release nor the deprecated 5.6.0 line. Applied to the markdown control tables, since scripts/generate.js regenerates data/entries from them; the regenerated entries and bundles are included so the tree is consistent. Verified against https://atlas.mitre.org/atlas-data/dist/v6/ATLAS-2026.07.yaml sha256 0e07bb07fc6423d72cdf24ddc2038a6905bcbc00ba571064153119ee1a5888d4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Eleven MITRE ATLAS control mappings pair an identifier with a name that ATLAS does not give it, across 48 rows in the three ATLAS tables. In six the identifier is right and the label is superseded; in five the label is right and current but belongs to a different technique. Every target is checked against the pinned ATLAS release named below. Judgement calls are kept out of this pull request and raised in #60.
DSGAI mapping
Every DSGAI entry except DSGAI21, plus ASI03, ASI07, ASI08 and LLM10 — 25 entry files in all, reached by regenerating from the three corrected markdown tables.
Checklist
python run_all_checks.py) — I could not tick this honestly.data_validation/run_all_checks.pycurrently prints "Validators not yet implemented - see validators/ for contribution guide" and exits without running a check, so a pass from it would not mean anything.npm run generateandnpm run buildboth succeed on this branch. Please tell me if there is another gate you would like run.crosswalk/only and adds no dataset records.Eleven MITRE ATLAS control mappings pair an identifier with a name that ATLAS does not give it. In six the identifier is right and the label is superseded, mostly from the pass that moved the matrix off "ML" wording. In five the label is right and current but belongs to a different technique, so the identifier is what moves. This changes 48 rows across the three ATLAS tables and nothing else.
I have kept this to corrections where the primary settles the question on its own, so there should be nothing here to weigh up. Anything needing a judgement call is in the companion issue instead, including two mappings I think are wrong but where the fix could reasonably go either way.
Every target was checked against
https://atlas.mitre.org/atlas-data/dist/v6/ATLAS-2026.07.yaml, sha2560e07bb07fc6423d72cdf24ddc2038a6905bcbc00ba571064153119ee1a5888d4. Thedist/ATLAS.yamlone level up in the same distribution directory declares itself deprecated on its first line, and the STIX JSON published atmitre-atlas/atlas-navigator-datalags the YAML: on 3 August it still gaveAML.T0020as "Poison Training Data" and omitted eleven identifiers, so the pinned v6 file is the one to read.Renames, where the identifier is right and the label moved:
AML.T0020AML.T0029AML.T0013AML.T0018AML.T0025AML.T0024.000Identifier errors, where the label is right and points at the wrong technique:
AML.T0057"Data from Information Repositories"AML.T0036AML.T0057is "LLM Data Leakage"AML.T0051"Exploit Public-Facing Application"AML.T0049AML.T0051is "LLM Prompt Injection"AML.T0031"Craft Adversarial Data"AML.T0043AML.T0031is "Erode AI Model Integrity"AML.T0016"Exfiltration via AI Inference API"AML.T0024AML.T0016is Obtain CapabilitiesAML.T0022"Valid Accounts"AML.T0012AML.T0022appears in neither release I checkedMostly this is not version drift, and it is worth separating the one case where it is. I read the current v6 release and the deprecated 5.6.0 line. Ten of the eleven pairings match neither, so they were never right. The exception is
AML.T0020, which really was "Poison Training Data" in the 5.6.0 line and became "Training Data Poisoning", so that row was correct when it was written. I have not read the intermediate v6 releases, so I can say these do not match the current or the deprecated file, and not that they never appeared anywhere.AML.T0022is the odd one out in the other direction: it is absent from both files, so the row cites an identifier no release I read defines. "Valid Accounts" isAML.T0012, which is what the rest of the row describes.The corrections are applied to the markdown tables rather than to
data/entries/, sincescripts/generate.jsregenerates the entries from the tables and would otherwise revert them. Runningnpm run generateafterwards propagates the change to 25 entry files: 23control_idvalues and 25control_namevalues, 76 lines in all. I have included the regenerated entries and bundles so the tree is consistent, and I am happy to drop thedocs/*.jsbundles from the diff if you would rather regenerate those yourself.One thing worth flagging that is not a correction. I found these by writing a script that reads each framework's primary source and compares every citation to it, and I would like to offer that separately if it is useful — it is in the companion issue rather than here, because it is a new file and a workflow, and that is a different conversation from fixing eleven rows. Two notes from building it that stand on their own regardless:
scripts/generate.jsstamps the current date into the four generated bundles, which means a reproducibility check on them can never pass, andnpm run validatecurrently reports 51 errors onmainindependently of anything in this change.