Skip to content

agent-threat-rules: refresh to ATR 4.3.0 (713 -> 844 values) - #1337

Open
eeee2345 wants to merge 1 commit into
MISP:mainfrom
eeee2345:atr-galaxy-4.3.0
Open

eeee2345 wants to merge 1 commit into
MISP:mainfrom
eeee2345:atr-galaxy-4.3.0

Conversation

@eeee2345

@eeee2345 eeee2345 commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Refreshes the Agent Threat Rules galaxy from ATR 3.5.6 to ATR 4.3.0, regenerated with this repo's scripts/generate-atr-galaxy.py against the rules/ directory at the v4.3.0 tag.

What changes

  • clusters/agent-threat-rules.json: 713 -> 844 values. Every existing value keeps its UUID (UUID5 from the rule ID); 131 values are added and none are removed. Kill-chain assignments of the existing values are unchanged.
  • Existing values whose ATR rule changed since 3.5.6 pick up the new data: 93 have updated MITRE ATLAS references, 100 have updated related relationships, 7 have revised descriptions and 1 has a new CVE. Relationships across the cluster go from 1,310 to 1,725, all resolved against the current mitre-atlas-attack-pattern and mitre-attack-pattern clusters.
  • galaxies/agent-threat-rules.json and the cluster: version 3 -> 4.
  • README.md: regenerated with tools/update_README_with_index.py; only the ATR total changes.

Generator changes (scripts/generate-atr-galaxy.py)

  • Adds the model-security category to the kill chain. A rule in that category (ATR-2026-02662) would otherwise fall back to skill-compromise.
  • ATR 4.x lists OWASP LLM references as bare IDs (LLM01:2025). The generator maps them to ID - name using the 2025 Top 10 names, so the field keeps its earlier format. This also corrects 135 existing values that carried names from the 2023 list or a mismatched ID and name, for example LLM02:2025 - Insecure Output Handling or LLM08:2025 - Excessive Agency.
  • The galaxy description no longer states a rule count, so it does not go stale between refreshes. The README total still shows the count.
  • Emits the category and sub_category fields that were added to the galaxy file by hand, so regeneration keeps them.

Validation

  • ./jq_all_the_things.sh leaves only these four files changed.
  • Both files validate against schema_clusters.json and schema_galaxies.json.
  • None of the 844 UUIDs appears in any other cluster, and no two values share a name.

Disclosure: I maintain Agent Threat Rules. This was done with Claude Code.

Regenerated with scripts/generate-atr-galaxy.py from the rules at
agent-threat-rules v4.3.0. Every existing value keeps its UUID; 131
values are added and none removed.

Generator changes:
- add the model-security category, which ATR has had since 3.x; a rule
  in it was otherwise filed under skill-compromise
- ATR 4.x lists OWASP LLM references as bare IDs ("LLM01:2025"); map
  them back to "ID - name" using the 2025 Top 10 names, which also
  corrects older values that carried 2023 names
- describe the galaxy without a rule count, so the text does not go
  stale between refreshes
- keep the category and sub_category fields added to the galaxy file
- version 3 -> 4 for the galaxy and the cluster
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.

1 participant