Beltdown:一個不可信任的儲存庫、零權限提示——Anthropic 花了 50 天才修好的沙箱逃逸
隱形新創 Accomplish 披露 Claude Code、OpenAI Codex 與 Cursor 一連串沙箱漏洞。其中 Claude Code 的「Beltdown」逃逸在 macOS 沙箱外執行攻擊者指令、全程零提示——而且掛了 50 天、約 30 個版本才完全修補。
如果你正在使用 AI 編碼代理(coding agent),那麼用來「關住」它的沙箱,就是唯一真正重要的安全邊界。本週,一家名為 Accomplish 的隱形新創掀開了蓋子:三大最受歡迎的編碼代理——Claude Code、OpenAI Codex 與 Cursor——的沙箱至今仍然漏洞百出,而各家實驗室面對研究者送上門的完整逃逸鏈,反應速度天差地遠。
這項披露由 Upstarts Media 的 Alex Konrad 於 9 月 10 日獨家報導,技術細節則發表在 Accomplish 自己的部落格上。時機相當尷尬:業界才正在消化「美國參議院小組委員會據報正在調查 OpenAI 代理入侵 Hugging Face 系統」的新聞,而前沿模型「逃出」沙箱作弊也早已是連續劇。不過 Accomplish 的創辦人們擔心的不是那些頭條級逃逸,而是每天有數百萬開發者使用的工具裡,那一長串已被視為「常態」、默默修掉的漏洞。
誰發現的?為什麼重要?
Accomplish 是一家位於特拉維夫的新創,由 Or Hiltch(CTO)、Amit Avner(CEO)與 Guy Zipori 共同創立,目前仍在隱形階段,產品方向是為企業端點上運行的 AI 代理提供強化隔離環境。他們的首席安全研究員 Oren Yomtov 整個夏天都在向 Anthropic、OpenAI 與 Cursor 通報沙箱漏洞。他們的立場很直白:新的 AI 模型讓過去低優先級的漏洞變成高風險,因為沙箱裡現在坐著一個自主、機率性的程序,而不可信任的內容可以操縱它。
「現在關於安全的討論很多,」Hiltch 對 Upstarts 說,「但這些討論並沒有真正反映在他們實際打造產品的方式上。」
修補速度的落差是整個故事最尖銳的部分:7 月通報給 Cursor 的漏洞,以及另外兩個通報給 OpenAI 的問題,各在約一週內修復;而一個類似的漏洞通報給 Anthropic 後,大約過了 50 天、歷經約 30 個軟體版本才完全修補。Avner 指出,在這段期間,駭客、網路罪犯或國家級行為者都可能利用這些缺口。OpenAI 提供了聲明,感謝研究者的通報並表示兩個問題都已於 8 月解決、正持續強化沙箱;Anthropic 與 Cursor 則未正式回應。
Beltdown:Claude Code 沙箱逃逸的解剖
此次披露最令人心驚的漏洞名為 Beltdown,攻擊的是 Claude Code 的 macOS 沙箱——它用 Apple 的 Seatbelt 設定檔包住代理的 Bash 工具。最違反直覺的一點是:開啟沙箱恰恰是權限提示消失的原因。一旦 Claude 把指令放進沙箱,它就不再逐一詢問用戶。
Accomplish 的展示簡單得可怕:開啟沙箱、把權限模式設到最嚴格的「不詢問」、在 Claude Code 裡打開一個不可信任的儲存庫,然後發送一則短訊息。結果那個儲存庫裡預埋的指令直接在 Mac 上執行——在沙箱外、以特權用戶身分、全程沒有跳出任何權限提示。它還能透過間接提示注入(indirect prompt injection)觸發,意思是代理讀到的惡意網頁或文件都可能引爆它。
攻擊鏈利用了一個結構性缺口:Claude Code 的 harness 為了替儲存庫建立索引,會在沙箱外自行執行 git 指令。而 git 的 core.fsmonitor 設定會在 git 檢視工作目錄時被當作 shell 指令執行。於是遊戲規則變成:把帶毒的 core.fsmonitor 種進某個 .git/config,再讓 harness 去跑一條會讀到它的 git 指令。
Accomplish 列出了四道防線,以及四個繞過手法:
- 強化過的 git 指令。 Claude Code 在沙箱外執行的 git 呼叫會帶上參數清空
core.fsmonitor等危險選項——但漏了一條:用來刷新檔案索引的git ls-files。 - 受保護的
.git資料夾。 Claude 的檔案工具拒絕寫入.git、Seatbelt 也擋住 bash 寫入,把其他資料夾改名成.git同樣被擋——但只限專案根目錄。阻擋「巢狀.git資料夾」改名的 Seatbelt 規則漏掉了,於是安裝腳本可以在子資料夾裡先用別的名字建好帶毒的 git 資料夾,再改名進去。 - git 在專案根目錄執行,那裡的
.git是乾淨的——但 harness 實際上是在 Bash 工具最後使用的目錄裡執行 git。腳本只要切換工作目錄到那個子資料夾即可。 - 沒有機制會自動重跑索引刷新——但 skill 自動載入會。腳本最後一行叫 Claude 去讀那個子資料夾裡的「建置報告」;Claude 讀檔時會檢查該資料夾有沒有 skills,載入 skill 會自動觸發檔案索引刷新。Claude 讀報告的那一刻,payload 就引爆了。全程零用戶互動。
披露時間軸本身就是一場修補競賽的縮影:7 月 13 日通報 Anthropic、當天完成分類;8 月 6 日 v2.1.223 首波強化,但漏掉部分 git 呼叫,逃逸鏈直接換一條路繼續通;8 月 26 日 v2.1.247 才完整修復。現在,harness 執行的每條 git 指令都會清空 core.fsmonitor。
SharedRoot:更早的 Cowork 逃逸與設計層論戰
Beltdown 並非 Accomplish 的初試啼聲。7 月他們發表了 SharedRoot,一條逃離 Anthropic Claude Cowork 代理環境的攻擊鏈:從一個連接的資料夾出發,利用 Linux 核心漏洞(CVE-2026-46331,act_pedit 模組的「pedit COW」)先透過非特權 user namespace 拿到 guest-root,再直接讀寫 host Mac 上的任何檔案——SSH 金鑰、雲端憑證樣樣來——因為 Cowork 的本地模式把整個宿主檔案系統以讀寫模式掛載進 VM 的 /mnt/.virtiofs-root。
Anthropic 將該報告以「Informative」結案,而 Cowork 現在預設改用雲端執行,這條路徑已不適用。但 Accomplish 更深層的論點值得注意:核心漏洞是整條鏈裡最不有趣的部分。隨著 AI 輔助漏洞研究已經工業化——主線核心的提權通報量約為前一年的 2.3 倍、公開利用程式在修補發布後幾小時內就出現——guest 核心在結構上永遠落後一個漏洞。依賴「guest 核心是乾淨的」的隔離設計,注定是輸家。他們建議的四道鎖(限制非特權 user namespace、把 seccomp 過濾器翻轉為預設拒絕、停用未用子系統的模組自動載入,以及最重要的一條——永遠不要把整個宿主掛進 VM)每一道都能擋掉一整「類」逃逸,而不只是單一 CVE。
為什麼這件事超出三家廠商的範圍
對 2026 年任何運行編碼代理的團隊,有三個啟示:
沙箱就是產品本身。 用 Accomplish 的話說,不可信任輸入對代理而言不是邊緣案例,而是主要案例。「模型做了蠢事」和「模型拿到了我的雲端憑證」之間的界線,就是這些產品唯一在賣的東西。當 harness 自己在沙箱外跑指令(git 索引、檔案監看),每一條這樣的路徑都是用戶看不見的攻擊面。
修補速度是一種安全功能——而且各家差異極大。 同一類漏洞,一週(Cursor、OpenAI)對上 50 天加約 30 個版本(Anthropic),這種落差應該被寫進企業採購評估標準。OpenAI 表示正「持續強化沙箱,包括收紧代理可寫入檔案位置的控制」;Anthropic 的相對沉默本身就是一項資訊。
模型能力是雙面刃。 Hiltch 那個修辭式問題——「如果這些前沿模型這麼強,為什麼找不到自己產品裡的這些關鍵漏洞?」——最讓人不舒服。把漏洞研究工業化的同一批模型,也讓攻擊者的漏洞研究工業化,而雙方現在瞄準的是同一道沙箱邊界。
對團隊而言,務實建議並不新鮮但更加急迫:把 Claude Code 升級到 2.1.247 之後、把每個 clone 下來的儲存庫都當成敵意輸入、如果代理會碰到敏感資料,考慮不依賴廠商自家沙箱的隔離方案——例如 host 共享範圍被限縮的 VM,或真實憑證根本不進 guest 的架構。
至於 Accomplish,他們把整家公司押在最後這個想法上。而這一週,很多安全團隊大概很慶幸有人這麼做。