📍 真實場景
接案工程師阿凱,平常用 Claude Code 處理客戶丟來的雜事
阿凱把 Claude Code 切到「自動模式」,丟給它一句「幫我摘要這個網址的內容」,然後就去倒咖啡,沒有守在電腦前盯著看
😖 卡住的地方:他以為官方講的「自動模式有安全分類器把關、零成功率被攻破」代表可以放心讓 AI 自己跑,沒想到研究者示範只靠一個看起來正常的「摘要網址」請求,就能讓 Claude Code 被騙去執行攻擊者的程式碼,而且成功率高達六到八成
💡 讀完你會知道「自動模式」到底防得住什麼、防不住什麼,以及今天就能做的三件事,讓自己不要變成下一個被攻破的案例
⚡ 一句話講清楚
先講清楚背景:Claude Code 從八月中開始,預設用 自動模式(Auto Mode)AI 自己決定要不要執行指令,不用每一步都跳出來問你「同意嗎?」,取代原本每個動作都要人工按同意的做法。改用一個「安全分類器」在背後即時判斷這個動作危不危險。官方委託第三方公司測了 72 種 提示注入攻擊(Prompt Injection)把惡意指令藏在網頁、文件裡,誘導 AI 誤以為那是使用者本人下的指令,進而去執行 情境,每種測十次,結果顯示自動模式的攻擊成功率是 0%。但這篇文章的作者自己動手測,同樣的自動模式,攻擊成功率卻衝到 60% 到 80%。
作者是怎麼辦到的?攻擊鏈設計得很巧妙:第一步,先誘導 Claude 放棄用內建的 WebFetch 工具AI 專門用來讀取網頁內容的安全通道,有一定限制,改用更底層、限制更少的 curl 指令去抓資料;第二步,把它導向一個包住特殊編碼檔案的 壓縮檔(ZIP archive)把多個檔案打包壓縮成一個檔案,常見副檔名 .zip;第三步,Claude 很聰明地拒絕直接執行裡面的可疑執行檔,改成自己動手寫一支 Python 解碼程式——聽起來很安全對吧?問題出在第四步:它是在「解壓縮出來、攻擊者能控制內容」的那個資料夾裡執行這支自己寫的程式。攻擊者事先在那個資料夾裡偷偷放了一個假冒的 struct.py 檔案,當 Claude 的程式想要 import 標準的 base64 模組時,Python 會優先讀到資料夾裡那個假的 struct.py(這叫 模組覆蓋(Shadowing)用同名的假檔案取代原本該被載入的標準檔案,讓程式在不知情下執行到惡意內容),惡意程式碼就這樣被偷渡執行了。
這件事的重點不是「Claude Code 特別爛」,而是說明一件更根本的事:AI 在每一個單獨步驟的判斷都可能是「合理、正確」的(它確實拒絕了明顯可疑的執行檔),但只要攻擊者能操控它運作的環境(例如工作目錄裡藏了什麼檔案),整條路徑加起來還是可能被攻破。官方測出的 0% 只代表「這 72 種已知情境、測這 10 次沒被攻破」,不代表所有攻擊方式都被涵蓋到了。
🏃 快速上手三步(今天就能做)
1
檢查自己是不是在用自動模式打開 Claude Code 設定,確認目前跑的是「自動模式」還是「每步驟需人工同意」。如果你平常會叫它去讀取外部網址、下載檔案、處理客戶給的連結,先手動切回需要人工核准的模式,尤其是處理不熟悉來源的網址時
▼
2
把會碰網路內容的任務丟進隔離環境如果工作流程一定要用自動模式跑(例如排程自動摘要),就把這個任務放進一個和你正式環境(帳號、金鑰、真實檔案)隔開的沙盒、容器或虛擬機裡執行,就算被攻破,攻擊者能碰到的東西也有限
▼
3
盯緊三個危險訊號並隨時能喊停檢查 Claude Code 的執行紀錄/終端機輸出,只要出現這幾種情況就先暫停人工檢查:①它原本該用 WebFetch 卻改用 curl 或其他指令直接連網、②它去解壓縮一個來路不明的檔案、③它動態寫程式並 import 模組時,import 的路徑落在剛剛解壓縮出來的資料夾裡
🧠 工程思維透鏡(資深工程師看到的是什麼)
🔭 官方測出 0%、研究者卻測出 80%,這中間的落差代表什麼?
官方的測試是「固定 72 種已知攻擊情境、各測 10 次」的黑箱評估,本質上只能證明「在這些已知路徑上防得住」,沒辦法證明「所有攻擊路徑都防得住」。安全分類器多半是根據已知的攻擊模式訓練出來的,攻擊者只要找到一條分類器沒學過的新路徑(像這次繞過直接執行惡意檔案、改成誘導 AI 自己寫程式再汙染執行環境),就能繞過去。工程上的教訓是:任何「零成功率」的宣稱都只對測過的範圍成立,不能當成通用的安全保證。
🔭 Claude 明明每一步都做出了「正確」的安全判斷(拒絕執行可疑二進位檔),為什麼最後還是被攻破?
這是一種供應鏈式的攻擊思路:防守方通常只檢查「這個動作本身合不合理」,但沒有檢查「執行這個動作的環境是否已經被污染」。Claude 選擇自己寫解碼程式、而不執行陌生的執行檔,這個判斷本身完全正確;但它是在攻擊者控制的資料夾裡執行這支程式,而 Python 載入模組時預設會優先找當前目錄——這是 Python 的正常行為,不是 bug,卻被拿來當攻擊工具。這提醒做 AI 安全防護時,不能只評估單一步驟的合理性,還要連「執行當下的環境與路徑是否可信」一起放進風控範圍。