Six CVEs, Two Vendors, One Detection Layer: ATR Ships the OX MCP Disclosure Pack
When the protocol vendor declines to patch, signature-based detection is the only realistic mitigation. Here are six MIT-licensed YAML rules covering the entire OX Security MCP-by-design batch (CVE-2026-40933 Flowise, CVE-2026-30623 LiteLLM, CVE-2026-22252 LibreChat, CVE-2026-22688 WeKnora, CVE-2025-54136 Cursor zero-click) plus Microsoft Copilot Studio CVE-2026-21520. All ship in agent-threat-rules v2.0.18.
2026 年 4 月 15 日,OX Security 公開研究指出 200,000 個 MCP server — 以及背後 1.5 億+ SDK 下載量 — 在設計上就暴露於任意命令執行。Anthropic 拒絕修改協定,把這個行為列為預期行為,把 sanitization 責任分派給下游開發者。
五天後 CVE 開始落地。接著 Microsoft Copilot Studio 的後續(CVE-2026-21520)提醒每個人:即使 indirect prompt injection 被修了,只要 source-origin 信任校準錯,資料仍會持續外洩。
這篇文章只做一件事:出貨偵測包,讓跑 ATR 相容 scanner 的安全團隊今天就有完整批次的 signature。
六條規則
| ATR ID | CVE | 抓什麼 |
|---|
|---|---|---|
| ATR-2026-00415 | CVE-2026-40933 (CVSS 9.9) | Flowise Custom MCP node — npx -c、node -e、python -c、bash -c flag bypass 類 |
|---|
| ATR-2026-00416 | CVE-2026-30623 | LiteLLM 類未認證 MCP server 註冊 |
|---|
| ATR-2026-00417 | CVE-2026-22252 | LibreChat MCP STDIO 參數注入(argv 級 shell metachar) |
|---|
| ATR-2026-00418 | CVE-2026-22688 | WeKnora MCP plugin config 驅動 RCE(config 檔當執行目標) |
|---|
| ATR-2026-00419 | CVE-2025-54136 + OX batch | Cursor / Windsurf / Claude Code / Gemini CLI / Copilot zero-click MCP config |
|---|
| ATR-2026-00420 | CVE-2026-21520 | Microsoft Copilot Studio SharePoint indirect prompt injection |
|---|
六條全部隨 agent-threat-rules v2.0.18 在 npm 出貨。MIT 授權。
六條的共同 pattern
讀 rule YAML 會發現同一個根因類別反覆出現:allowlisted binary + interpreter inline 執行 flag = 任意 code。Pattern 一致到偵測很直接 — 這個組合才是 RCE 與安全呼叫的差別,不是 binary 本身。
# 摘自 ATR-2026-00415
- field: tool_response
operator: regex
value: '(?i)"command"\s*:\s*"(?:npx|node|deno|bun)"\s*,\s*"args"\s*:\s*\[[^\]]*"-(?:c|e|-eval|-command|-exec)"\s*,\s*"[^"]{4,400}"'
description: "MCP server config invoking Node-family interpreter with inline-execution flag — direct CVE-2026-40933 RCE signature"同一個 anchor pattern 參數化 shell binary 和 PowerShell encoded command,覆蓋跨平台變體。五條規則,一個偵測想法。
Copilot Studio 規則(ATR-2026-00420)結構不同 — 偵測「內部來源 channel + 注入序言 + 外部 domain 轉發意圖」。形狀是:(SharePoint|Teams|Outlook) + (ignore previous|disregard above|new instructions:) + email-to-non-Microsoft-domain。Source-origin 信任失敗是架構層問題;這條規則抓表面 signature。
為什麼這裡 signature 層是唯一選項
Anthropic 對 OX 的回應是,STDIO 命令執行是預期行為。從協定設計立場這是站得住的,但這把每個下游 MCP client 留給自己實作輸入 sanitization — Cisco 的 State of AI Security 2026 報告指出,只有 34.7% 的組織部署了 prompt injection 防禦。
當協定廠商不修,社群維護的 signature 層才是止血的東西。不是 signature 取代架構修復,而是它在架構辯論進行時爭取時間。這就是 ATR 的用途。
False positive 預算
六條規則都帶明確的 false_positives 區塊,記錄會踩到的東西(教學文件、掃這些 payload 的安全工具、有審查過配置的內部團隊模板)。六條總 FP rate:在 ATR auto-merge 閘門每個 PR 跑的 432 樣本良性 skill 語料上 0%。
規避預算
每條規則也帶 evasion_tests,記錄 regex 層抓不到的特定繞過。這批反覆出現的規避:
- ●
/usr/bin/envwrapper — 攻擊者把 env 當 command 欄位的字面值,bash/python 放在 args[0]。這批中五條都被這技術繞過。v2 需要 env-wrapper anchor。 - ●投放 binary 間接 — 攻擊者先用別的管道丟一個 payload binary,然後註冊絕對路徑。Command 欄位看起來很乾淨。這裡需要的是行為 / 檔案完整性偵測,不是 regex。
- ●惡意套件發布 — 攻擊者發木馬 npm 套件,只用名字引用。這歸供應鏈偵測(ATR 的 package-hallucination + skill-malware 規則族處理,不在新 CVE pack)。
這些記錄下來,是因為不誠實的規避預算比漏抓更快侵蝕信任。我們告訴使用者我們做不到什麼。
怎麼部署
Cisco AI Defense(skill-scanner)和 Microsoft Agent Governance Toolkit 都自動 sync 上游 npm 套件;這兩個整合上的使用者已收到 v2.0.18。
自架 ATR 消費者:
npm update agent-threat-rules
# 或
pnpm up agent-threat-rulesGitHub Action 使用者:
- uses: agent-threat-rules/atr-action@v2
with:
rules-version: '>=2.0.18'接下來
ATR 5 月路線圖:
1. 對受影響規則發 env-wrapper 偵測 v2
2. CSAI Foundation 規格落地後,把六條 CVE 規則映射到 AARM 控制點
3. 為 Copilot Studio 規則加 LLM-as-judge tier-2 確認(regex 層是地板;semantic 層才能抗規避)
如果你跑 MCP 堆疊,想對自己的部署評估 ATR 覆蓋,repo 在 github.com/Agent-Threat-Rule。開 issue。發 PR。貢獻閘門自動化,輪轉時間以小時計,不是週。
當協定不會被修,比偵測還慢的只有沉默。