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
4 tasks
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
All twenty-one DSGAI entries, plus ASI03, ASI07, ASI08 and LLM10, which is 25 entry files, reached by regenerating from the three corrected markdown tables.
Checklist
npm run generatesucceeds on this branch.npm run buildis generate followed by validate and it exits 1, with 51 errors, 67 warnings and 240 passed. That is the same figurenpm run validategives onmainat 2aa707a, so the failure is the pre-existing one noted at the end of this description and nothing in this change moves it. Please tell me if there is another gate you would like run.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, sha256 0e07bb07fc6423d72cdf24ddc2038a6905bcbc00ba571064153119ee1a5888d4. The dist/ATLAS.yaml one level up in the same distribution directory declares itself deprecated on its first line, and the STIX JSON published at mitre-atlas/atlas-navigator-data lags the YAML: on 3 August it still gave AML.T0020 as "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:
Identifier errors, where the label is right and points at the wrong technique:
Mostly 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.T0022 is 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" is AML.T0012, which is what the rest of the row describes.
The corrections are applied to the markdown tables rather than to data/entries/, since
scripts/generate.jsregenerates the entries from the tables and would otherwise revert them. Runningnpm run generateafterwards propagates the change to 25 entry files: 23 control_id values, 25 control_name values and 4 url values, 52 lines in all. I have included the regenerated entries and bundles so the tree is consistent, and I am happy to drop the docs/*.js bundles 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.Edited 2026-08-20 to correct three things in this description. DSGAI21 is changed like every other DSGAI entry, so the exception clause was wrong while the count of 25 was right. The entry regeneration is 52 lines and not 76. And
npm run builddoes not succeed here, because validate fails on the 51 pre-existing errors it also fails on againstmain.