
摘要
本報告提供了對Anthropic的AI驅動編碼助手(AI-powered coding assistant)Claude Code中發現的兩個關鍵漏洞(CVE-2025-54794(路徑限制繞過)和CVE-2025-54795(命令注入))的全面技術分析。本分析深入探討了Claude Code的架構設計,特別是與當前工作目錄(CWD)限制和命令白名單相關的安全控制。我們檢查了導致這些缺陷的底層機制,包括簡單的前綴式路徑驗證和不充分的輸入清理。此外,報告討論了這些漏洞的潛在影響,從敏感資料外洩到任意程式碼執行和權限提升。本報告提出了包括強健的輸入驗證、安全命令執行實踐和最小權限原則的緩解策略,以增強AI驅動開發工具的安全態勢。本研究強調了對與主機環境互動的AI系統進行徹底安全檢查的重要性。

1. 簡介
AI驅動開發工具(AI-powered development tool)的快速進展,如Anthropic的Claude Code,通過提供程式碼生成、除錯和系統互動的智能協助,徹底改變了軟體工程工作流程。這些工具承諾提高生產力和簡化開發程序。然而,它們與底層作業系統和檔案系統互動的固有能力引入了新的攻擊面和安全挑戰。隨著這些AI助手越來越融入關鍵開發流程,了解和緩解潛在漏洞變得至關重要。
本報告聚焦於Claude Code中發現的兩個重要漏洞,CVE-2025-54794和CVE-2025-54795,這些漏洞突顯了該工具安全模型中的關鍵缺陷,特別是關於路徑驗證和命令執行。通過剖析這些漏洞的技術細節,我們旨在提供對架構弱點的洞察,並為保護類似的AI驅動開發環境提供實際建議。本文所述的發現基於最近的安全研究文章和補充技術文件的分析。
2. Claude Code架構與安全模型
Claude Code作為一個AI驅動的編碼助手,在用戶的終端環境中運作,旨在促進各種軟體開發任務。其核心功能包括解釋自然語言提示,將其轉化為可執行動作,並與本地開發設定互動。Claude Code設計的一個基本面向是其安全模型,旨在提供足夠的實用性,同時保持嚴格的邊界以防止未經授權的系統存取。此模型主要建立在兩個關鍵控制之上:
2.1. 當前工作目錄(CWD)限制
Claude Code設計為將其檔案操作限制在預定義的當前工作目錄(Current Working Directory, CWD)內。此限制機制旨在防止AI助手在未經明確用戶授權的情況下存取或操作其指定範圍外的檔案。任何試圖存取CWD外的檔案或目錄的行為應觸發系統提示要求用戶許可或被直接拒絕。此控制對於防止敏感資料洩漏和維護主機系統檔案結構的完整性至關重要。
2.2. 預批准命令(白名單)
為了進一步增強安全性,Claude Code將 Shell Command 的執行限制在嚴格定義的預批准命令白名單內。這些命令通常僅限於安全的、專注於開發的操作,例如
ls
、
cat
、
touch
、
mkdir
和
echo
。更危險的命令,如
rm
(移除)或
curl
(資料傳輸),要麼完全被阻止,要麼在執行前需要明確的用戶確認。此白名單機制旨在提供對命令注入和權限提升的保護,理論上限制了AI在系統上執行malicious payload的能力。
3. 漏洞的技術分析
儘管有預定的安全控制,Claude Code中仍發現了兩個重大漏洞,顯示即使是善意的安全架構,若實現細節有缺陷,也可能被繞過。這些漏洞,CVE-2025-54794和CVE-2025-54795,暴露了路徑驗證和輸入清理中的關鍵弱點。
3.1. CVE-2025-54794:路徑限制繞過(CVSS分數7.7)
此漏洞源於簡單的前綴式路徑驗證缺陷。Claude Code用於驗證請求檔案路徑是否在允許的CWD內的內部機制依賴於簡單的`startsWith`檢查。這種方法雖然看似簡單,但在未仔細考慮檔案系統細微差別的情況下,容易被繞過。
3.1.1. 繞過機制
漏洞的核心在於負責路徑驗證的去混淆JavaScript程式碼片段:
- function ww(Z) {
- return pB(Z).startsWith(pB(t9()));
- }
- // Which translates to:
- function isPathWithinCwd(filePath) {
- return path.resolve(filePath).startsWith(path.resolve(originalCwd));
- }
如程式碼所示,函數`isPathWithinCwd`將提供的`filePath`和`originalCwd`(Claude Code的指定工作目錄)解析為其絕對路徑,然後檢查解析後的`filePath`字串是否以解析後的`originalCwd`字串開頭。例如,如果`originalCwd`是
/Users/eladbeber/Documents/claude_code
,攻擊者可以創建一個名為
/Users/eladbeber/Documents/claude_code_evil
的目錄。由於
/Users/eladbeber/Documents/claude_code_evil
字面上的確以允許的前綴
/Users/eladbeber/Documents/claude_code
開頭,Claude Code錯誤地授予對
/Users/eladbeber/Documents/claude_code_evil
內檔案的讀取存取權,儘管它位於預定的沙箱邊界之外。這允許攻擊者讀取敏感檔案,繞過許可提示,並突破預定的沙箱限制。
3.1.2. 路徑限制繞過的影響
此漏洞的影響顯著。攻擊者可以:
- 讀取敏感檔案: 存取設定檔案、私鑰或其他儲存在CWD外的機密資料。
- 繞過許可提示: 規避旨在防止未經授權檔案存取的明確用戶同意機制。
-
突破沙箱限制:
獲得對檔案系統中任意位置的存取,特別是當結合符號連結(symlinks)使用時。在Claude Code以提升權限運行的環境中,此缺陷可能成為權限提升的入口,允許攻擊者在無明確許可的情況下讀取關鍵系統檔案,如
/etc/passwd
。
3.2. CVE-2025-54795:透過命令注入的程式碼執行(CVSS分數8.7)
此漏洞構成更嚴重的威脅,使在託管Claude Code的系統上執行任意程式碼成為可能。根本原因在於不充分的輸入清理和對用戶提供資料的錯誤處理,當建構和執行 Shell Command 時。
3.2.1. 漏洞機制
雖然Claude Code採用了預批准命令的白名單(例如
echo
、
ls
、
cat
),但缺陷出現在如何將參數傳遞給這些命令。如果用戶提供的輸入包含 Shell Metacharacter(如
;
、
|
、
&
、
&&
、
||
、
$()
或反引號
`
),這些字元在命令執行前未被正確轉義。這允許攻擊者在預定的白名單命令旁注入並執行任意命令。
考慮以下攻擊者為
echo
命令提供輸入的範例:
echo "Hello, World!" ; ls -la
Claude Code不僅僅回顯字串,而是同時執行
echo
命令和注入的
ls -la
命令,導致類似以下的輸出:
Hello, World! total 8 drwxr-xr-x 2 user user 4096 Aug 1 10:00 . drwxr-xr-x 3 user user 4096 Aug 1 09:00 .. -rw-r--r-- 1 user user 12 Aug 1 10:00 test.txt
這清楚地展示了繞過命令白名單,允許執行未批准的命令。
3.2.2. 命令注入的影響
由於其嚴重的潛在後果,命令注入漏洞的CVSS分數高達8.7:
- 資料外洩: 攻擊者可以讀取敏感檔案並將其傳輸到外部伺服器。
- 系統損害: Threat actor可以安裝malware、創建新用戶帳戶或更改系統設定,導致完整的系統損害。
- 拒絕服務(DoS): 惡意命令可能干擾系統的正常運作,使其無法使用。
4. 緩解策略與最佳實踐
Anthropic已針對CVE-2025-54794和CVE-2025-54795發布了更新程式,強烈建議用戶立即更新其Claude Code安裝。除了這些特定更新程式外,以下幾個一般安全最佳實踐對於緩解AI驅動開發工具中的類似漏洞至關重要:
-
嚴格的輸入清理:
所有用戶提供的輸入,特別是用於檔案路徑或 Shell Command 的輸入,必須經過嚴格驗證和清理。這包括正確轉義或引用 Shell Metacharacter,以防止其被解釋為命令。應優先使用安全的命令執行函數(例如Python中的
subprocess.run
與shell=False
)。或者,可以實現允許字元的嚴格白名單或對所有已知 Shell Metacharacter 的手動轉義。 - 最小權限原則: AI助手和任何其他工具應以絕對必要的最小權限運行。以root或提升權限運行它們會顯著增加成功攻擊的潛在影響。
- 容器化與沙箱化: 在具有嚴格資源和網路控制的隔離環境(例如Docker容器、虛擬機器)中部署AI助手,可以限制任何成功攻擊的爆炸半徑(Blast radius)。這確保即使漏洞被攻擊,攻擊者的存取也被限制在隔離環境內。
- 定期安全審計與滲透測試: 對AI驅動工具進行頻繁的安全審計和滲透測試,對於主動識別和解決漏洞至關重要。這包括對程式庫的靜態和動態分析,以及現實世界的攻擊模擬。
- 監控異常行為: 實施嚴格的日誌記錄和監控系統,以檢測異常檔案存取模式、可疑命令執行或異常網路活動,可以提供潛在攻擊的早期警告。
5. 觀察與洞察
在Claude Code中發現的漏洞突顯了關於AI驅動開發工具安全的幾個關鍵洞察:
- AI工具的雙重性質: 雖然AI助手提供了顯著的生產力提升,但它們直接與底層系統互動的能力創造了新的且複雜的攻擊面。使其強大的功能(例如檔案系統存取、命令執行)若未妥善保護,可能被武器化。
- 整體安全設計的重要性: 安全性不能是事後補救措施。必須從一開始就融入AI系統的設計和開發生命週期。僅依賴表面檢查(如前綴式路徑驗證)或不完整的白名單可能導致關鍵的繞過。
- 輸入清理的挑戰: 以安全的方式處理用戶提供的輸入仍然是一個持續的挑戰,特別是當該輸入同時被AI模型和 Shell 環境解釋時。Shell Metacharacter 的細微差別及其解釋需要仔細的轉義和驗證。
- 持續檢查的需要: 即使是來自知名開發者的複雜AI系統也可能存在漏洞。持續的安全研究、審計和及時更新對於維護這些工具的完整性和安全性至關重要。
- AI作為安全研究工具: 諷刺的是,研究表明Claude本身可用於逆向工程其自身的程式碼,突顯了AI作為漏洞發現和安全分析的強大工具的潛力。
6. 未來展望
隨著AI越來越深入地融入軟體開發和其他關鍵領域,網路安全的格局將不斷演變。未來的AI驅動工具可能具有更複雜的互動模型和更大的自主性,這將需要更強健的安全措施。未來發展和研究的重點領域包括:
- 進階沙箱化與隔離: 開發更安全且高效的沙箱化技術,能夠對AI代理與主機系統的互動提供細粒度控制(Fine-grained control),在不妨礙功能的情況下最小化攻擊面。
- AI安全策略的正式驗證: 應用形式方法驗證AI系統中實現的安全策略和控制的正確性和完整性,確保預定的限制在數學上是健全的且無法被繞過。
- AI輔助安全: 利用AI本身來增強安全性,不僅僅作為潛在的漏洞來源。這包括用於自動漏洞檢測、威脅情報和事件響應的AI。
- 安全提示工程: 開發安全提示工程的最佳實踐和工具,幫助開發者設計不易受到注入攻擊和其他對抗性輸入形式的提示。
- AI安全決策的透明度與可解釋性: 提高AI安全決策的透明度和可解釋性,使開發者和安全專業人員更好地理解為什麼某些動作被允許或拒絕,並更容易除錯安全問題。
7. 結論
對Claude Code中CVE-2025-54794和CVE-2025-54795的分析是一個重要的提醒,即將強大的AI工具融入敏感環境需要嚴格且主動的網路安全方法。雖然AI助手承諾革新生產力,但其底層安全機制必須經過精心設計、實現和持續檢查。討論的漏洞突顯了簡單安全實現的危險,特別是在路徑驗證和命令執行等領域。通過採用最小權限原則、嚴格的輸入清理、全面的沙箱化以及持續的安全審計,組織可以顯著增強其AI驅動開發工作流程的安全態勢。最終,培養安全意識文化並擁抱先進的安全工程實踐對於安全且負責任地發揮AI的全部潛力至關重要。