Conversation
d58cf6e to
20455cb
Compare
Fix the Sigma rule's invisible-character detection, which never matched real payloads: the literal '\uXXXX' globs were matched as literal text by production backends. Replace them with a tool_description|re regex over the actual codepoints (zero-width, bidirectional, and the U+E0000-U+E007F tag range). Rework the test harness to model real backend semantics (drop the unicode-escape hack) and add test-log cases carrying genuine invisible characters. Result: 13/13 pass with full pattern coverage. Also address the rest of the review: - Complete References with the six missing incident citations plus the RADE source; reconcile the inlined rule with the shipped file. - Reconcile the ATT&CK mapping: keep Initial Access primary, add supporting tactics, and replace the loose T1055 with T1027 (Obfuscated Files). - Expand the Description with the technical mechanism. - Correct RADE (Retrieval-Agent Deception, arXiv:2504.03767) and remove hype language. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Frederick F. Kautz IV <fkautz@alumni.cmu.edu>
20455cb to
a76534f
Compare
|
The escape-literal bug is real, and the two halves are the same class: the rule read as enforcing and matched nothing, and the test read as green because Small thing in case it was simply missed in a batch: T1002–T1005 (#214–#217) all merged on 2026-07-27, and this one has been open since 2 July. One coverage note, so the technique page does not over-claim once this lands. After the fix the detection is a regex over real codepoints, which closes the invisible-character class properly. It does not touch the class where the payload is plainly visible but not in a form the pattern matches. Measured against a description scanner I maintain (Norviq, https://github.com/norviq-dev/norviq), all of these scan clean: base64 of the instruction, ROT13, the target path spelled out in words instead of punctuation, and the same instruction in plain Spanish or German. Those are complementary to what this rule covers rather than competing with it — but a page that documents the technique and ships a Sigma rule invites the reading that the rule covers the technique. The payloads and the run they came from are at https://norviq.dev/blog/the-mcp-server-you-approved/ if they are useful as fixtures. Suggestion: land it as-is, then add the missed cases as explicitly known-negative fixtures rather than leaving them undocumented. Asserting the current behaviour on a payload you know you miss is what keeps the coverage claim honest as the rule evolves, and it is how the next person notices when the rule moves. |
Summary
Addresses the SAF-T1001 (Tool Poisoning Attack) technique review. The headline fix is the detection rule: its invisible-character patterns never matched real payloads.
Detection fix (primary)
'*\uXXXX*'. A production backend treats those as the literal 6-character string, not the U+200B codepoint, so a description containing a genuine zero-width / bidirectional / Unicode-tag character matched none of them — exactly the attack the page documents.tool_description|reregex over the actual codepoints (zero-width, bidirectional overrides/isolates, and theU+E0000-U+E007Ftag range).test_detection_rule.pyto model real backend semantics (dropped the non-standardunicode-escapedecode that was making the broken rule look green) and addedtest-logs.jsoncases carrying real invisible characters. Now 13/13 pass with full pattern coverage, and the test reflects production behavior.Other review findings
Test
🤖 Generated with Claude Code