部落格 發布於 AIA: 2026年6月22日

偽造 Sentry 錯誤如何透過 MCP 誘導開發助理執行命令

Tenet Threat Labs 把這條攻擊稱為 Agentjacking:攻擊者可以用公開的 Sentry DSN 寫入偽造錯誤事件,再讓 Sentry MCP server 把這些事件帶進 AI coding agent 的工作流程。當開發者要求 Claude Code、Cursor 或 Codex 調查 Sentry issue 時,agent 可能把事件裡偽裝成修復建議的文字當成可信診斷內容,進而執行攻擊者指定的 npm 命令。防禦重點不是把系統觀測資料(日誌、事件與監控資料)當成可信指令,而是在 MCP 輸出、agent 客戶端、工具權限、命令核准、沙箱和對外連線上一起設邊界。

Indirect Prompt InjectionCredential TheftTool AuthorizationRuntime IsolationMCP Security
9 項對應的 AIDEFEND 防禦手法
來源: One Fake Bug Report Hijacked a $250 Billion Company's AI Agent - Then 100+ More 
作者: Ron Bobrov, Barak Sternberg, Nevo Poran (Tenet Threat Labs)
原文發布: 2026年6月17日

威脅分析

  • 攻擊者寫入的是系統觀測資料,不是直接找開發者下手。 Tenet 描述的攻擊從公開的 Sentry DSN 開始。DSN 可以想成 Sentry 專案的收件地址,前端 SDK 會靠它知道錯誤事件要送到哪個專案。因為它通常會出現在前端程式碼裡,所以不適合把它當成密碼或秘密憑證。問題是,攻擊者如果拿到這個 DSN,也可能把自己控制的事件內容送進同一個專案,讓後續 MCP 或 agent 流程讀到。
  • 被寫入的事件會透過 MCP 變成 agent 讀到的提示詞。 攻擊者可以控制錯誤訊息、tag、context、breadcrumb、user 欄位、stack trace 和 fingerprint。Tenet 的展示把事件格式做得像 Sentry 的修復建議,裡面放了一段看似診斷用的 npx 命令。
  • Agent 從 issue 調查跨到程式碼執行。 當開發者要求 AI coding agent 調查尚未處理的 Sentry issue 時,Sentry MCP server 會把被偽造的事件交回來。agent 可能把假的 Resolution 當成可信診斷建議,接著執行事件裡指定的套件。
  • 惡意程式會用 agent 執行環境的權限跑起來。 Tenet 回報的 controlled validation 涵蓋 Claude Code、Cursor、Codex、本機電腦、WSL、雲端容器和 CI。該套件會探測環境變數、AWS 設定、npm 設定、Docker 設定、Git 憑證、網路介面和其他可能碰得到的機敏資料。
  • 這不是單純的 Sentry 漏洞,而是架構邊界問題。 這次事件背後真正的風險是:外部可寫入的資料來源,透過 MCP 變成模型上下文裡看似可信的內容,最後跨進工具執行。任何 MCP integration 只要會把外部可影響資料交給有 shell、套件、瀏覽器、檔案或網路權限的 agent,都可能出現同一類問題。
  • 只靠提示詞規則太單薄。 Tenet 表示,單靠提示詞層的指示(例如要求 agent 把 Sentry 事件只當診斷資料,不要照著事件內容安裝套件或執行 shell 命令)無法穩定阻止 agent 執行被注入的命令。真正可靠的控制要放在 MCP 輸出邊界、客戶端回應處理邊界、工具 dispatcher、沙箱、對外連線政策和憑證生命週期裡。

適用的 9 項 AIDEFEND 防禦手法

AID-H-029.004
Client Response Parsing, Rendering & Execution Surface Hardening
極高
這是 client 端最直接的防線位置。Sentry MCP 回應應該被解析、呈現為不可信內容,不能讓 server 回傳文字或 terminal 內容直接變成會自動執行的動作。執行前應用唯讀確認畫面顯示來源事件、命令、套件名稱和參數。
AID-H-035.005
MCP Server Output, Resource URI & Elicitation Boundary Controls
極高
這是 MCP server 輸出端最直接的防線位置。Sentry event message、context 欄位、breadcrumb 和 stack trace 都是外部送進來的系統觀測資料。MCP server 應該標記來源、限制內容、遮蔽 secrets,並避免 resource text 或生成的提示詞夾帶高權限指令。
AID-H-019.004
Intent-Based Dynamic Capability Scoping
極高
可信意圖是調查 issue,不是任意執行套件。每次請求應該先產生簽章保護的最小權限範圍,只允許唯讀查看 Sentry 和分析 repo;除非另有核准,不然要拒絕 shell、套件安裝、讀取憑證和對外連線。
AID-H-018.003
Decoupled Plan-Then-Execute Architecture
在「讀到偽造修復建議」和「真的執行」之間切開一道關卡。模型只能輸出結構化的計畫,再由一個確定性的動作選擇器(Action Selector)依角色 allowlist 驗證這份計畫,通過後才會真的呼叫工具;被注入的 npx 步驟因此無法自己跑到 shell。它比沙箱和對外連線控制更早一層,後者是在工具派發後才收斂執行。
AID-H-019.003
High-Impact Two-Channel Validator
執行 npx 或安裝套件是高影響程式碼執行。獨立驗證通道應該要求命令來自可信專案政策或人工核准,並把核准綁定到精確的命令、套件和目標;任何資訊不足的情況都要預設拒絕。
AID-I-001.004
Sandbox Network Egress Restrictions
Tenet 的驗證依賴 beacon 流量和曝險探測。工具沙箱應該預設禁止對外連線,只允許經審核的目的位址;這樣套件就不能連到攻擊者控制的伺服器、探測 cloud metadata,或在執行後把證據傳出去。
AID-I-001.003
Ephemeral Single-Use Sandboxes for Tools
如果真的必須跑高風險診斷命令,應該只在一次性的全新沙箱裡跑,而不是在開發者主機或可重用的 CI 環境中執行。執行完就銷毀,可以限制持久化、跨工作階段污染,以及碰到 .aws.npmrc、Docker 設定或 SSH 狀態這類主機檔案的機會。
AID-D-003.003
Agentic Tool Use & Action Policy Monitoring
政策監控會把高風險工具決策變成安全事件:來自 MCP 內容的命令提案、被拒絕的套件安裝、不尋常的 shell 使用,以及允許或拒絕決策的數量突然暴增。這不是主要用來擋下攻擊的防線,而是讓團隊看見異常、調查原因,並調整工具閘門。
AID-E-001.001
Foundational Credential Management
只要懷疑已經曝險,團隊就需要能快速輪替 agent 執行環境碰得到的長效 secrets 和帳號,包括 Sentry auth token、GitHub token、cloud key、npm token、SSH material 和資料庫憑證。這類控制的價值在於事件發生後能快速止血與復原,不是用來當主要預防防線。

身為資安防禦者,我們應該這麼做

  • 盤點所有能透過 MCP 查詢 Sentry 或其他觀測系統的 AI coding agent。記錄 agent 產品、MCP server、Sentry 專案、DSN 暴露路徑、agent 可用的憑證、shell 權限、套件安裝權限和對外連線政策。
  • 把 Sentry 事件當成不可信外部資料。錯誤訊息、tag、breadcrumb、context key、user 欄位和 stack trace 進入模型時,都應該是帶有來源標記的資料欄位,而不是 agent 可以照做的診斷指令。
  • 不需要 Sentry MCP 的地方先停用。需要保留的地方,優先採用唯讀調查工作流程;任何來自 MCP 內容的文字若要觸發 shell 執行、套件安裝、瀏覽器導向、檔案寫入或對外連線,都要先經過明確人工核准。
  • 把套件執行列為高風險動作。agent 執行 npxnpm install、curl、shell 或生成腳本前,必須顯示精確命令、套件 namespace、來源事件、repo context 和預期產物,並把核准綁到這一份精確計畫。
  • 診斷命令要在全新沙箱裡執行,預設禁止對外連線,而且不要預設掛載主機 secrets。不要讓一般 agent triage 流程碰到 AWS profile、GitHub token、npm token、Docker config、SSH agent、正式環境 .env 檔或 cloud metadata 端點。
  • 如果 agent 可能已經執行來自 MCP 內容的命令,收集 agent transcript、shell history、套件中繼資料、網路記錄和 beacon 目的位址。輪替執行環境中可碰到的 Sentry auth token、GitHub token、cloud key、npm token、SSH material,以及其他可能在該環境裡出現的 secrets。

結論

Agentjacking 把系統觀測資料變成 AI agent 執行期的信任邊界問題。Sentry event 可以協助診斷,但不應該成為安裝套件或執行命令的授權來源。防禦重點是一路保留這個界線:MCP 輸出要標記來源,client 不能隱性執行,工具呼叫要經過授權,命令要在沙箱和對外連線控制下執行,疑似暴露後也要能輪替憑證。其中一部分控制屬於 agent client 或 MCP server 供應商,使用方能做的是選擇已實作這些把關的產品,必要時自架或代理 MCP server,並執行自己掌握的核准、沙箱和對外連線政策。