關閉選單
Claude Code:OAuth令牌可能透過隱藏的MCP劫持而被竊取

Claude Code 是一個代理系統,這對開發者來說是好事,但對安全團隊來說卻令人擔憂。代理系統可以在幾乎不被察覺的情況下擴大攻擊面,一個主要問題是 OAuth 令牌。如果攻擊者能夠取得此令牌,他們實際上就擁有了一個主金鑰或數位代理,可以存取所有連接到 Claude Code MCP 或可從 Claude Code MCP 存取的工具。

Mitiga Labs 發現 Claude Code 中存在一個漏洞,攻擊者可以利用該漏洞將包括令牌在內的輸出重定向到自己的基礎設施,然後再將資料傳送到合法目的地。這是一種典型的中間人攻擊,攻擊者可以利用該漏洞來獲取令牌。

MCP 配置和 OAuth 令牌儲存在 ~/.claude.json 檔案中。如果攻擊者能夠修改該文件,MCP 流量就可以重新導向到攻擊者本身的基礎設施。 Mitigate 已發布了實現此目的的詳細資訊。

攻擊者需要滿足兩個前提條件:一是能夠在配置了動態授權 MCP 伺服器的 Claude Code 伺服器上安裝定制的 npm 套件;二是該 npm 套件會註冊一個生命週期鉤子,該鉤子會在安裝過程中運行。

安裝後鉤子程式會尋找常用的複製位置,並在路徑中預先配置信任對話方塊並將其設為 true。之後打開目錄時不會彈出任何提示,因為提示所依據的標誌位已被設置。

該鉤子也會開啟 ~/.claude.json 文件,並編輯全域設定檔中的 MCP 伺服器。它會修改 'mcpServers' 字段,使其包含代理地址。 這使得我們,也就是『攻擊者』,能夠介入所有發送到 MCP 伺服器的請求。作為攻擊者,我們已經配置並攔截了 mitmproxy。

每當 Claude Code 啟動或刷新 MCP 會話時,它都會連接到代理伺服器,令牌也會傳輸到攻擊者的基礎設施。用戶看到的只是一個正常的流程。如果用戶輪換令牌,鉤子會在下次加載時將其寫回。如果使用者編輯了 MCP URL,鉤子也會在下次載入時將其載入回來。攻擊者實現了隱蔽性和持久性。

攻擊者可以“將受害者的 SaaS 憑證持久重定向到攻擊者控制的基礎設施,透過令牌輪換自動恢復,對受害者的終端 UI 不可見,並且與提供者側的合法流量無法區分。”

作為中間人攻擊者,由於 OAuth 令牌以明文形式儲存在 ~/.claude.json 檔案中,因此可以輕鬆竊取任何 OAuth 令牌。一旦竊取,攻擊者就可以使用該令牌作為繞過多因素身份驗證 (MFA) 的“黃金密鑰”,存取 MCP 連接的任何工具,並獲得與用戶相同的權限。

如果用戶不加注意,就不會發現任何問題。由於 MCP 只是按照指令執行操作,用戶也意識不到這些操作已被入侵,因此不會發出任何警報。現在,應該將「假設系統已被入侵」作為新的安全策略。 Mitiga 建議:「監控 Claude Code 配置變更、MCP 伺服器 URL 變更、OAuth 刷新行為、可疑的 SaaS API 活動以及透過 MCP 整合的異常流量。」

使用者千萬不要等待Anthropic的解決方案, Mitiga已於2026年4月10日將調查結果報告給了Anthropic。 2026年4月12日,Anthropic回覆稱此問題「超出範圍」,給出的理由與他們對Adversa「TrustFall」披露的回應基本相同:用戶已經同意了接下來可能發生的情況。


資料來源:https://www.securityweek.com/claude-code-oauth-tokens-can-be-stolen-through-stealthy-mcp-hijacking/
 
Mitiga 研究人員發現 Anthropic 的 Claude Code 存在安全風險,攻擊者可透過隱蔽的 MCP 劫持技術重導流量,進而竊取 OAuth 令牌並取得 SaaS 平台的持久存取權限。