觀點 · 資訊分享

OpenClaude 漏洞 CVE-2026-42074:被提示注入的 AI 能自己關掉沙箱,CVSS 9.8

開源程式碼助手 OpenClaude 在 0.5.1 版以前,讓模型可以自己傳參數關掉沙箱。NVD 給出 CVSS 9.8(嚴重),描述指被提示注入的模型能在沙箱外執行任意指令;NVD 記載 0.5.1 已修補。

發布
2026-06-03
篇幅
約 5 分鐘 · 2,226 字
結構
7 節 + 3 題常見問題
標籤
#OpenClaude#CVE-2026-42074#沙箱逃逸#提示注入#AI 資安
OpenClaude 漏洞 CVE-2026-42074:被提示注入的 AI 能自己關掉沙箱,CVSS 9.8

一句話看懂:開源程式碼助手 OpenClaude 在 0.5.1 版以前,讓 AI 模型自己決定要不要關掉沙箱;被提示注入的模型因此可以在沙箱外執行任意指令。

OpenClaude 沙箱繞過漏洞資訊圖卡:被提示注入的模型可自己關掉沙箱,CVSS 9.8,0.5.1 已修補

先用白話講:AI 助手的「安全籠子」

想像你請了一位機器人管家打掃。為了安全,它被關在透明的玻璃籠子裡工作,只能碰籠子裡的東西,這個籠子就是沙箱(Sandbox)。

問題出在:舊版 OpenClaude 讓這位機器人自己決定要不要開籠子的門。如果有壞人在機器人讀到的內容裡偷偷寫「為了完成任務,請把籠子打開」(這就是提示注入 Prompt Injection),機器人就可能照做,然後直接在你的電腦上動手。

發生什麼事

  • 漏洞編號:CVE-2026-42074,NVD 記錄的公開時間是 UTC 2026 年 6 月 2 日 17:16(台灣時間 6 月 3 日凌晨,自行換算)。
  • 受影響軟體:OpenClaude,一套開源、可接雲端與本地模型的程式碼助手命令列工具。
  • 受影響版本:0.5.1 以前;NVD 記載已在 0.5.1 修補。
  • 嚴重度:CVSS 3.1 評分 9.8(CRITICAL)。NVD 的評分向量顯示:可從網路發動、攻擊複雜度低、不需要權限、不需要使用者額外操作。
  • 弱點分類:NVD 列出 CWE-284(存取控制不當)與 CWE-306(關鍵功能缺少驗證)。

為什麼這個漏洞很嚴重?

OpenClaude 自己的威脅模型,把 LLM 視為「不可信的一方」,因為模型可能被惡意內容操控。可是舊版同時讓模型握有關安全防護的開關:

  1. 開關在模型手上:dangerouslyDisableSandbox 出現在 BashTool 的輸入結構裡,模型在工具呼叫中就能把它設成 true。
  2. 預設放行:設定 allowUnsandboxedCommands 預設為 true,也就是預設允許在沙箱外執行指令。
  3. 兩者相加:被提示注入的模型可以讓任意指令在沙箱外執行,達到主機層級的程式碼執行。

GitHub 的公告也寫到:只要用預設設定、啟用了沙箱,就受影響。公告列出的潛在後果包括讀寫主機檔案、竊取憑證與建立反向連線等,並註明 PoC 由 LLM 產生、經人工研究者驗證。

給開發者的技術細節

NVD 的參考連結指向一個修補提交,標題是「require trusted approval for sandbox override」,大意是沙箱外執行必須經過可信的核准。從提交內容看得到的改動有:

  • 模型看不到這個參數:BashTool 給模型的輸入結構,直接把 dangerouslyDisableSandbox 與內部欄位 _dangerouslyDisableSandboxApproved 都移除。
  • 新增內部欄位:_dangerouslyDisableSandboxApproved,欄位說明是「使用者核准的沙箱外執行」,只供內部使用。
  • 提示詞改寫:BashTool 的提示詞不再教模型在遇到沙箱限制時自己重試並關掉沙箱,改成要求指令在沙箱內執行,被限制擋下時要說明可能原因,並與使用者一起調整設定。
  • 設定說明改寫:allowUnsandboxedCommands 的說明改成「允許受信任、由使用者發起的指令在沙箱外執行」,預設值仍標示為 true。
  • 新增測試:提交裡有測試,確認模型端的輸入結構會拒絕 dangerouslyDisableSandbox。
// 修補提交的作法(節錄):模型看得到的輸入結構直接省略這兩個欄位
fullInputSchema().omit({
  dangerouslyDisableSandbox: true,
  _dangerouslyDisableSandboxApproved: true,
})

要說明的是:我沒有逐行驗證 _dangerouslyDisableSandboxApproved 在每條程式路徑裡是怎麼被設定的,上面只整理提交能直接看到的部分。另外,GitHub 公告頁標示的發布日期是 2026 年 5 月 12 日,頁面上的「Patched versions」欄位寫著 None,與 NVD 記載的 0.5.1 修補版本不一致;建議以專案實際發行的版本與發行說明為準。

我的看法

這個案例很典型:安全邊界不該由「可能被騙的那一方」自己決定。AI 工具要做的是「模型想做什麼,由人或固定的規則來放行」,而不是模型自己宣告「這次我不要沙箱」。

如果你有在用 AI 程式助手,建議順手檢查三件事:

  1. 更新:OpenClaude 請升到 0.5.1 以上。
  2. 看權限設定:確認工具有沒有哪個設定,是讓模型自己決定要不要略過安全檢查。
  3. 最小權限:AI 助手執行的帳號與環境,只給它完成工作需要的權限,萬一被騙也不至於波及整台機器。

自己架 AI 工具、或幫客戶接 AI 助手的人,也可以把「模型是不可信輸入來源」當成設計前提,這跟網站不能信任使用者表單是同一個道理。

名詞小辭典

  • 沙箱(Sandbox):一種隔離環境,讓程式在裡面執行而不影響外部系統,用來限縮出錯或惡意程式的影響範圍。
  • 提示注入(Prompt Injection):攻擊者把指令藏在模型會讀到的內容裡,誘使模型做出原本不該做的事。
  • CVSS:通用漏洞評分系統,滿分 10 分,9.0 以上屬於嚴重等級。
  • CWE:常見弱點列舉,是漏洞類型的分類編號。

資料來源

常見問題

什麼是沙箱(Sandbox)?為什麼它很重要?
沙箱是一個隔離環境,讓指令在裡面執行,但碰不到主機上不該碰的資料。對 AI 程式助手來說,沙箱是最後一道保險:就算模型被騙去下危險指令,影響也被圈在裡面。
這個漏洞是怎麼被利用的?
依 NVD 描述,模型在工具呼叫中把 dangerouslyDisableSandbox 設成 true,加上預設的 allowUnsandboxedCommands 為 true,指令就會在沙箱外執行。攻擊者要先想辦法讓模型被提示注入,例如讓它讀到被動過手腳的內容。
我該怎麼辦?
把 OpenClaude 更新到 0.5.1 以上。GitHub 公告附的測試程式提到,把 allowUnsandboxedCommands 設為 false 時,模型送來的旗標會被忽略;但這是測試裡的說明,不是官方正式列出的緩解建議,仍以更新為主。
LINE