Skip to content

[Security] Document MITRE ATLAS coverage and ATT&CK v19.2 for 9.6 - #9065

Open
nastasha-solomon wants to merge 21 commits into
mainfrom
claude/docs-draft-feature-docs-127795
Open

nastasha-solomon wants to merge 21 commits into
mainfrom
claude/docs-draft-feature-docs-127795

Conversation

@nastasha-solomon

@nastasha-solomon nastasha-solomon commented Oct 27, 2026 •

Copy link
Copy Markdown
Member

Summary

Fixes elastic/docs-content-internal#1941.
Fixes elastic/docs-content-internal#1942.

This PR has two parts:

  • MITRE ATLAS and 9.6 changes: Documents what's new in 9.6. These changes are tagged for 9.6 and serverless, and the 9.5 names, labels, and callout stay in the docs for readers on earlier versions.
  • Content and organization improvements: Fixes that aren't tied to 9.6 and apply to every version, mostly on the MITRE coverage page.

MITRE ATLAS and 9.6 changes

In 9.6:

  • The MITRE ATT&CK® coverage page is renamed MITRE coverage, and a new MITRE ATLAS tab shows how your rules cover attacks on AI and machine learning systems.
  • The rule's Threat mappings setting replaces MITRE ATT&CK™ threats, and you can add MITRE ATLAS as a second framework.
  • The bundled MITRE ATT&CK version moves from v19.1 to v19.2.
  • The MITRE ATT&CK® updated to v19 callout is removed from the Detection rules page.

Preview:

Content and organization improvements

  • MITRE coverage - Rewritten around what users go there to do: find gaps in their detection coverage and close them.
    • The intro states the page's purpose, and the coverage grid is explained before other sections refer to it.
    • Headings say what you get, and the sections follow the workflow. The technique popup section now comes before the enable section that uses it.
    • Passages that described how the page works internally now describe what users see and can do next. This covers the filters, search, and expanded cells, plus what to check when a rule is missing.
    • Adds the privileges needed to view the page and to enable rules from it.
    • The enable section notes that Enable all disabled needs Disabled rules in the filter, and corrects that filter's name from Not enabled rules.
  • Remap detection rules to MITRE ATT&CK v19 - Headings state what changed and what to do, and coverage page mentions are now links.
  • Manage detection rules and Install prebuilt rules - Stop recommending the Defense Evasion tactic, which MITRE ATT&CK v19 retires. Manage detection rules uses a different search example. Install prebuilt rules suggests Stealth and Defense Impairment as starting tactics, and keeps Defense Evasion for versions that use an earlier MITRE ATT&CK version.
  • All changed pages - Adds trademark symbols to the first mention of MITRE ATT&CK® and MITRE ATLAS®, following MITRE's branding guidance. The 9.0 to 9.5 UI labels now include the symbols Kibana shows, such as MITRE ATT&CK® threats.

Verification

The 9.6 labels, versions, and behavior were checked against Kibana's 9.6 branch, which carries elastic/kibana#292796, elastic/kibana#296562, and elastic/kibana#298185. The behavior described in the coverage page rewrite was checked against Kibana main and the v9.0.0 tag. That includes the default filter, cell shading, search matching, and popup contents. The outdated mappings callout was checked against the v9.4.0 and v9.5.0 tags.

Generative AI disclosure

  1. Did you use a generative AI (GenAI) tool to assist in creating this contribution?
  • Yes - Claude Opus 5.5, via Claude Code and Cursor

nastasha-solomon and others added 3 commits October 27, 2026 19:21
Rename the coverage page to MITRE coverage, add the MITRE ATLAS tab and
how rules are counted per framework, and document the Threat mappings
rule setting that replaces MITRE ATT&CK threats in 9.6. Split the
supported versions table so 9.5.x stays on ATT&CK v19.1 and 9.6.0+ uses
v19.2, and scope the Detection rules page v19 callout to 9.5.

Update the pages that name the renamed labels: alert details flyout,
rules search, Security UI navigation list, and the detection-rule-edit
Agent Builder skill pages.

Addresses elastic/docs-content-internal#1941 and #1942.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reorder the coverage page so the ATLAS section follows the grid
explanation, add viewing and enabling privileges, name both frameworks
in the versions lead-in, and align "disabled" wording with the
Disabled rules filter label. Use click for buttons and remove for
mappings in Threat mappings. Replace the retired Defense Evasion search
example with Persistence and split ATLAS search into its own scoped
item. Indent nested list content four spaces.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Elastic Docs AI PR menu

Check the box to run an AI review for this pull request.

  • Review docs changes (docs-review). Status: not started.

Powered by GitHub Agentic Workflows and docs-actions. For more information, reach out to the docs team.

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Elastic Docs Style Checker (Vale)

Summary: 2 suggestions found

💡 Suggestions (2): Optional style improvements. Apply when helpful.
File Line Rule Message
solutions/security/detect-and-alert/mitre-attack-coverage.md 87 Elastic.WordChoice Consider using 'deactivated, deselected, hidden, turned off, unavailable' instead of 'Disabled', unless the term is in the UI.
solutions/security/detect-and-alert/mitre-attack-coverage.md 93 Elastic.WordChoice Consider using 'deactivated, deselected, hidden, turned off, unavailable' instead of 'disabled', unless the term is in the UI.

The Vale linter checks documentation changes against the Elastic Docs style guide. To use Vale locally or report issues, refer to Elastic style guide for Vale.

nastasha-solomon and others added 2 commits October 27, 2026 23:24
- Move the MITRE ATLAS version into the ATLAS section and return the
  supported versions section to MITRE ATT&CK only.
- Shorten the coverage page intro and the ATLAS section.
- Drop field names from the remap page, so the warning icon and red
  outline steps hold for every version without nested badge lists.
- Trim the Threat mappings setting and use "sub-techniques".
- Remove the old page name from the Elastic Security UI nav list and
  the extra ATLAS line from the built-in skills reference.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Follow MITRE's branding guidance: use MITRE ATT&CK® and MITRE ATLAS™
on the first prose mention of each framework on each page, and in the
remap page title. Bold UI labels stay as they appear in the product.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
nastasha-solomon and others added 2 commits October 27, 2026 23:37
Kibana 9.0 to 9.5 shows these labels with trademark symbols, so the
docs now match them exactly:

- Rule form field: MITRE ATT&CK™ threats
- Coverage page name: MITRE ATT&CK® coverage
- Detection rules callout: MITRE ATT&CK® updated to v19

Checked against Kibana upstream/9.0, upstream/9.5, and upstream/9.6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Reword task headings so each starts with a verb and says what the
  reader gets, and order them to follow the workflow.
- Move the supported MITRE ATT&CK versions reference to the end.
- Name the page wherever the text said "the page" or "this page".
- Use "select" instead of "click" for the technique popup title.

Anchor IDs are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…in serverless

- Reword the remap page's What changed subsections so each heading
  states the change, name custom rules in the remap section heading,
  and rename the last step to say what to confirm and where.
- Tag the MITRE ATT&CK™ threats setting and the 9.5 Detection rules
  callout as unavailable in serverless. Both are gone from Kibana main.

Anchor IDs are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reframe the intro and sections around user goals instead of how the page
is built. Define the coverage grid before later sections refer to it, nest
MITRE ATLAS under the grid section, and introduce the technique popup
before the enable steps. Note that disabled rules must be included in the
filter before Enable all disabled works, and point to the outdated
mappings callout in 9.5 and later.

Co-authored-by: Cursor <cursoragent@cursor.com>
```

The coverage page maps detections to [MITRE ATT&CK versions](https://attack.mitre.org/resources/updates/) used by {{elastic-sec}}.
To view the coverage grid for MITRE ATLAS [v2026.08](https://github.com/mitre-atlas/atlas-data/releases/tag/v2026.08), select the **MITRE ATLAS** tab. If a rule is mapped to both frameworks, it counts toward coverage on both tabs.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will be changed before release to v2026.09. This is TRADE's PR and we will have one up too.

ATT&CK mappings will be on v20.1 if they come out in time, I'll keep you updated but here is the coordinating ticket as well: elastic/kibana#166152

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
To view the coverage grid for MITRE ATLAS [v2026.08](https://github.com/mitre-atlas/atlas-data/releases/tag/v2026.08), select the **MITRE ATLAS** tab. If a rule is mapped to both frameworks, it counts toward coverage on both tabs.
To view the coverage grid for MITRE ATLAS [v2026.09](https://github.com/mitre-atlas/atlas-data/releases/tag/v2026.08), select the **MITRE ATLAS** tab. If a rule is mapped to both frameworks, it counts toward coverage on both tabs.

@bmorelli25 bmorelli25 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super easy to follow. I learned something new!

@mdbirnstiehl mdbirnstiehl left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One question, but otherwise LGTM!

Co-authored-by: Brandon Morelli <brandon.morelli@elastic.co>
nastasha-solomon and others added 2 commits October 30, 2026 01:11
- Drop the 9.0-9.5 badge from the coverage page rename note. The prose
  already says when the page was renamed, matching the Rules rename
  notes on sibling pages.
- Mark the 9.0-9.5 MITRE ATT&CK alert flyout field unavailable in
  Serverless, to match the same field on the common rule settings page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Matches the ® used for ATT&CK elsewhere in the docs, per review.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Replace security-rules-coverage.png with security-mitre-coverage-attack.png,
  and add security-mitre-coverage-atlas.png to the MITRE ATLAS section.
- Explain the example's filter state: it includes disabled rules and has
  no enabled rules, so headers show 0 covered techniques while cells are
  shaded.
- Note that column headers also show disabled and enabled rule counts.
- Correct the cell description: the sub-technique count follows the
  current filters, not only enabled rules (getNumOfCoveredSubtechniques).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
nastasha-solomon pushed a commit to nastasha-solomon/kibana that referenced this pull request Nov 2, 2026
…#302501)

## Summary

Addresses: elastic#166152 for `9.6.0`
([comment](elastic#166152 (comment)))

Adds MITRE ATLAS
[`v2026.09`](https://github.com/mitre-atlas/atlas-data/releases/tag/v2026.09)
to the bundled MITRE artifact. Previous ATLAS version was `v2026.08`,
added in elastic#296562. This matches the
ATLAS version prebuilt rules now use in TRADE:
elastic/detection-rules#7080.

`v2026.08` is intentionally kept in the artifact. Versions are additive,
and each entity carries its own `framework` and `framework_version`. The
API and UI resolve the latest version per framework by default, so
`v2026.09` becomes the ATLAS default and past versions stay available by
explicit version.

### How it was updated

All steps are from the Kibana repo root. Package docs:
`x-pack/solutions/security/packages/security-mitre-attack-server/README.md`.

1. In
`x-pack/solutions/security/packages/security-mitre-attack-server/src/build_artifact/build_artifact.ts`,
append the new release tag to the framework's versions array:
- ATLAS: `ATLAS_CONTENT_VERSIONS` (tags:
https://github.com/mitre-atlas/atlas-data/releases)
- ATT&CK: `MITRE_CONTENT_VERSIONS` (tags:
https://github.com/mitre/cti/tags)

2. Regenerate the artifact (fetches every pinned tag, prints
per-framework/version counts):
   ```sh
node
x-pack/solutions/security/packages/security-mitre-attack-server/scripts/build_artifact.js
   ```
3. Sanity check the printed counts and confirm the diff to
`artifacts/mitre_artifact.json` is additions only (existing versions
should be unchanged).
4. Run the package tests:
   ```sh
node scripts/jest
x-pack/solutions/security/packages/security-mitre-attack-server
   node scripts/jest x-pack/solutions/security/plugins/mitre_attack
   ```
5. Manually verify the API (see Test Criteria).

### Artifact changes

| Framework | Version | Entities | Tactics | Techniques | Subtechniques
|
|---|---|---|---|---|---|
| ATLAS (new) | `2026.9` | 224 | 16 | 120 | 88 |
| ATLAS (unchanged) | `2026.8` | 213 | 16 | 114 | 83 |
| ATT&CK Enterprise (unchanged) | `19.2` | 873 | 15 | 365 | 493 |

`mitre_artifact.json` diff is additions only (+3,209 lines).

## Acceptance Criteria

- [x] User can map and use new ATLAS techniques in Security Solution
- [x] The user-facing documentation is updated with the new version
  - [ ] elastic/docs-content#9065


## Test Criteria

- [x] Jest passes for `@kbn/security-mitre-attack-server` and the
`mitre_attack` plugin
- [x] Manually verified `GET /internal/mitre/entities` on a local stack
(`x-elastic-internal-origin: kibana`, `elastic-api-version: 1`):
  - [x] `framework=atlas` (no version) returns `2026.9` (16 / 120 / 88)
  - [x] `framework=atlas&framework_version=2026.9` returns `2026.9`
- [x] `framework=atlas&framework_version=2026.8` returns `2026.8` (16 /
114 / 83)
- [x] No params / `framework=enterprise` still returns ATT&CK `19.2` (15
/ 222 / 475 active; 15 / 365 / 493 with `status=all`)
- [x] Unknown or non-normalized versions (`2027.1`, `2026.09`,
`v2026.09`) return `200` with empty arrays (existing behavior, not
changed here)
- [x] Verify the new `v2026.09` techniques (see the release notes linked
above) are available for mapping on the Rule Creation page
- [x] Verify the new `v2026.09` techniques are available on the MITRE
coverage page

This branch was successfully deployed

1 active deployment
docs-preview — d406442b Deployed Nov 6, 2026 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants