The Agent Action Layer: The Security Gap Every Incumbent Skipped
Every incumbent secured a layer below where agents act. The tool-call layer, where agents actually get hijacked, was skipped, and it needs an open standard.
2025 到 2026 年的資安支出,集中在 prompt 層、模型層,以及 GenAI 治理儀表板。AI agent 真正「動手」的那一層,也就是呼叫工具、調用 MCP server、讀取 skill 的那一層,被跳過了。而那正是 agent 被劫持的地方。一個叫 postmark-mcp 的受信任 MCP server,連續 15 個發行版本、每天靜默 BCC 出 3,000 到 15,000 封信,才被人發現。沒有任何 prompt 過濾器、沒有任何模型 guardrail 看得見這件事,因為攻擊活在工具呼叫裡,不在 prompt 裡。
我是 Adam Lin。我打造並營運 ATR(Agent Threat Rules),一套針對這一層的開放、MIT 授權的偵測標準。這篇文章要論證的是:為什麼 agent 動作層需要的是一套連對手都採用的中立開放標準,而不是又一個單一廠商的黑盒子。生態早已同意的證據是:Cisco、Microsoft、MISP、Gen Digital、SigmaHQ 都已經把 ATR 出貨進自己的產品。
什麼是 agent 動作層?巨頭為什麼跳過它?
Agent 動作層,是 agent 從「說話」切換到「動手」的那一刻:一次工具呼叫、一次 MCP 交換、一個從 registry 載入的 skill、一條寫到磁碟的 shell 指令。巨頭之所以跳過它,是因為他們的產品被設計在低一層。Prompt injection 過濾器檢查的是送進模型的文字。模型層 guardrail 約束的是模型的輸出。GenAI 治理儀表板追蹤的是政策與使用量。三者都真實有用。但沒有一個在看工具呼叫本身,而那正是入侵執行的地方。
公開的 CVE 紀錄讓這個缺口變得具體。MCPJam Inspector 預設綁定在 0.0.0.0,於是在 v1.4.3 之前的每一個版本,單一個 HTTP 請求就等於遠端程式碼執行(CVE-2026-23744)。Azure MCP Server 有一個 SSRF,竊取 managed-identity token 並伸手進 Azure 資源(CVE-2026-26118)。Claude Code 自己的 hooks 與 MCP 設定被用來執行任意 shell 指令、竊取 API key(CVE-2025-59536 與 CVE-2026-21852)。每一個都是動作層的失守。prompt 過濾器一個都看不到。
這一層為什麼需要標準,而不是產品?
動作層是一個共享的攻擊面。同一個惡意 skill、同一個埋雷的 MCP server、同一種工具濫用 pattern,會同時打中 Claude Code、Cursor、Windsurf、Gemini CLI、Cline 與 Codex CLI。一次寫好的偵測,應該保護它們全部。這是一個標準問題,不是產品問題。CVE 為漏洞做過這件事,Sigma 為 SIEM 偵測做過這件事:一種中立、可攜的格式,任何廠商都能讀,任何廠商都能貢獻。
單一廠商的產品填不了這個位置,有一個結構性的原因。如果偵測邏輯是專有的,對手就不會跑它,而攻擊者只需要繞過一個實作。如果格式是開放的,對手會把它採用進自己的掃描器、把規則貢獻回來,整個生態就一起變硬。這就是為什麼 ATR 以一套獨立標準的方式治理,PanGuard 建構於其上並負責營運,這跟 Sigma 與出貨它的廠商之間的關係一模一樣,而不是某一家公司的私有功能。
這套標準必須是可執行的,不是一份 checklist。ATR 對應到 OWASP Agentic Top 10(2026)全部十個類別,從 ASI01 Agent Goal Hijack 到 ASI10 Rogue Agents,共 866 條規則到類別的映射,其中九個類別達到 STRONG 覆蓋。它也對齊 MITRE ATLAS,涵蓋 101 個頂層技術中的 34 個、16 個 tactic 中的 13 個。它跟框架的差別在於:這些是毫秒級執行的確定性規則,不是一個讓你自評的成熟度模型。
生態真的在往這一層收斂嗎?
是的,而證據就是:直接競爭者出貨了同一套開放規則。以下是已經 merge 進生產環境的部分,每一項都有 ATR ADOPTERS 紀錄中的一個已 merge 的 pull request 為憑。
| 採用者 | 出貨了什麼 |
|---|---|
| Cisco AI Defense | ATR merge 進其 skill-scanner(PR #99) |
| Microsoft Agent Governance Toolkit | 287 條規則的 ATR pack,每週自動同步(PR #1277) |
| MISP / CIRCL | ATR 規則 ID 分類法與威脅情報 galaxy merge 進 MISP core |
| Gen Digital(Norton / Avast) | ATR merge 進 Sage(PR #33) |
| SigmaHQ | ATR 列入其文件(PR #6015) |
| Microsoft PyRIT | ATR 整合 merge(PR #1715) |
| OWASP Agent Security Regression Harness | ATR merge(PR #74) |
為了精確區分已出貨與進行中:Google ADK、NVIDIA garak、OpenAI Guardrails,以及 NIST OSCAL catalog(PR #338)是審查中的 open pull request,不是背書。一個 merge 的 PR 意思是程式碼在跑,不代表該組織背書我。我刻意把這條線劃得很硬,因為誇大採用正是標準失去信任的方式。
這套標準實際偵測攻擊的能力如何?
誠實的答案是:取決於語料與 lane,而且我拒絕給一個混合過的單一數字。針對 NVIDIA garak 的野生 jailbreak 語料(650 個樣本),Layer 1 確定性規則達到 97.2% recall。在自建的 PINT-format 語料上(850 個樣本,取自 deepset prompt-injections 與 Lakera Gandalf,不是 Lakera 的私有 PINT),99.7% precision、63.6% recall。在 HackAPrompt 上(4,780 個樣本),69.6% recall,對照 28.6% 的基線,100% precision。在 498 個樣本的真實世界 SKILL.md 語料上,100% recall、97% precision、0.2% 誤報。
誤報是分 lane 的,我把話說清楚。針對 65,000 個樣本的 benign gate,enforce lane 約 0.24% 誤報,預設的 hunt lane 約 9%。沒有一個涵蓋整個引擎的單一 FP 數字,任何給你一個 agent 資安產品單一 FP 數字的人,都是把真相四捨五入掉了。語料大小與 lane 永遠跟著數字一起走。
問題的規模,證成了這個做法。我掃描了六個公開 registry 上的 96,096 個 AI agent skill,確認 751 個是惡意的。Threat crystallization 是這套標準跟上腳步的方式:一個 AI 理解一次新攻擊,它被寫成一條確定性規則,那條規則接著為所有人以毫秒級執行。從新攻擊到出貨規則大約一小時。ATR 目前在十個類別下承載近 690 條規則(截至 2026 年 7 月為 688 條,npm agent-threat-rules v3.5.6)。
FAQ
ATR 是 PanGuard 的專有標準嗎?
不是。ATR 是一套獨立、MIT 授權、自行治理的開放標準。PanGuard 只是一個建構於其上的產品,就像廠商建構於 Sigma 或 CVE 之上一樣。Cisco 與 Microsoft 這些競爭者都直接出貨 ATR。
為什麼 prompt injection 過濾器攔不住這些攻擊?
因為入侵是在工具呼叫裡執行,不在 prompt 裡。postmark-mcp 的靜默 BCC 與 MCPJam 的 RCE 都活在動作層,而 prompt 過濾器與模型 guardrail 從不檢查那一層。
一個 merge 的 pull request 代表該組織背書 ATR 嗎?
不代表。一個 merge 的 PR 代表程式碼在那個產品裡跑。我把背書分開標示,並把審查中的 PR(Google ADK、NVIDIA garak、OpenAI Guardrails、NIST OSCAL)清楚標為審查中,絕不標成採用。
背後的合規驅動力是什麼?
EU AI Act 第 15 條讓偵測對抗式攻擊成為高風險 AI 系統的法定義務,在 omnibus 延後至 2027 年 12 月後,於 2027 年底執行。沒有任何近期的 2026 年期限。
下一步只需要一個指令。跑 npm install -g @panguard-ai/panguard && pga up,然後 pga scan <target> 在安裝前掃描一個 skill 或 MCP server。掃描器與規則都是免費、MIT 授權的。或者直接讀這套標準、貢獻一條規則,因為一個開放動作層的全部意義就在於:一次寫好的偵測,保護所有人。