AI 編碼助手如 Cursor 或 Claude Code 正在改變開發者的工作方式,它們能讀取文件、分析錯誤並直接修改代碼。然而,這種強大的能力也帶來了新的安全漏洞。近期由 Tenet Security 提出的 Agentjacking 攻擊,揭示了一個嚴重的邏輯缺陷:如果 AI 助手將外部服務回傳的數據視為可信指令,駭客就能透過偽造數據,誘導 AI 在開發者的電腦上執行惡意代碼。
這場攻擊的核心在於對 Sentry 的利用。Sentry 是一個開源的錯誤追蹤與性能監控平台,開發者將其整合在應用中,當程式崩潰或發生錯誤時,Sentry 會記錄詳細的錯誤資訊。為了讓 Sentry 接收數據,每個專案都有一個 DSN(Data Source Name),這是一個公開的、僅限寫入的憑證,通常直接嵌入在前端網頁或客戶端代碼中。
Agentjacking 的攻擊路徑非常巧妙,它並不直接攻擊伺服器,而是利用 Model Context Protocol(MCP,模型上下文協定)。MCP 是一個讓 AI 模型能標準化地連接外部工具或數據源的協定。當開發者安裝了 Sentry 的 MCP 伺服器插件後,AI 助手就能透過這個協定讀取 Sentry 中的錯誤報告,以幫助開發者修復 Bug。
攻擊過程分為三個階段。首先,駭客在公開的網頁中找到目標公司的 Sentry DSN。接著,駭客利用這個 DSN 向 Sentry 伺服器發送一個偽造的錯誤事件,但在錯誤訊息中植入精心設計的 Markdown 格式內容,將惡意指令偽裝成 Sentry 系統建議的修復步驟。最後,當開發者對 AI 助手下令請它修復 Sentry 中的未解決問題時,AI 助手會透過 MCP 讀取該偽造事件,並將其視為可信的系統診斷結果,進而執行其中的惡意指令。
這種攻擊最危險的地方在於它繞過了幾乎所有的傳統防禦體系。由於所有操作都是在開發者授權 AI 助手執行的,且指令是透過合法的 MCP 管道傳遞,因此 EDR(端點偵測與回應)、WAF(網頁應用程式防火牆)或 VPN 等安全設備完全無法偵測到異常。對於 AI 助手而言,它無法分辨這是一次真實的程式崩潰,還是一個由駭客精心設計的陷阱。
一旦攻擊成功,駭客將獲得與開發者相同的權限。這意味著他們可以輕易竊取環境變數、Git 憑證、私有倉庫 URL 以及開發者的身份資訊,達成完全的設備控制。
根據研究顯示,全球有超過兩千家組織暴露在這種風險之中,且在針對主流 AI 編碼助手的測試中,攻擊成功率高達百分之八十五。儘管 Sentry 官方承認此問題,但認為從架構上完全防禦具有技術困難,目前僅採取過濾特定字串的暫時方案。
對於工程師而言,這次事件提供了一個重要的警示:AI 助手雖然能提高生產力,但它們也擴大了攻擊面。我們不能盲目信任 AI 從外部工具(尤其是接收外部輸入的服務)獲取的資訊。在讓 AI 助手擁有執行權限或讀取敏感數據之前,必須意識到任何由 AI 自動觸發的指令,其背後可能隱藏著不可信的外部輸入。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。