比如你接了一個案子,對方用雲端硬碟傳來一個專案壓縮檔。你解壓縮,打開 AI 寫程式工具,丟一句「幫我看看這個專案在做什麼」。

這個動作很順,順到沒人會停下來想。但今年九月有資安研究指出,光是「打開」這一步,就可能讓資料夾裡別人寫好的東西先跑起來。你還沒下任何指令。

先說清楚,不用嚇到。三個習慣就夠了,下面會講。

這篇只講「別人傳來的資料夾」。外掛怎麼裝,看《你裝的 AI 外掛,跟你請的外包一樣要談權限》。信件和網頁裡藏的指令,看《你叫 AI 讀的那封信,可能藏著給它的指令》。如果你想先把整體的安全底線畫好,可以從《Vibe Coding 前,我會先幫自己畫三條線》開始。

發生了什麼,GitSpawn 是什麼

先補兩個詞。

git 是幫專案記錄修改歷史的工具。每個用 git 管的專案資料夾裡,都有一個隱藏資料夾叫 .git,裡面放著歷史紀錄,也放著一份設定檔。

設定檔裡有個選項叫 core.fsmonitor。它本來是效能用的,意思是「檢查檔案有沒有變動時,順便呼叫某個程式幫忙」。設定本身完全合法。問題是,這個「某個程式」可以由別人事先填好。

2026 年 9 月初,資安公司 Manifold Security 揭露一類手法,取名 GitSpawn。Cloud Security Alliance(CSA,雲端安全聯盟)隨後也發了研究筆記。

運作方式是這樣。AI 寫程式工具一啟動,為了了解專案背景,會跑 git status 之類的指令。git 一跑,就會去呼叫設定檔裡指定的那個程式。如果那個程式是別人預先放進去的,它就在你的電腦上,用你的權限跑起來了。

就像收到陌生人寄來的 USB,插上去就自動執行。

依 Manifold 與 CSA 的說法,這次涉及七個工具、八個發現,影響的工具包含 Claude Code、Codex、Cursor。

有一個前提要講。一般的 git clone 不會把這份本地設定帶過來,所以從 GitHub 正常抓下來的專案,不太會碰到這件事。風險出現在資料夾「連同 .git 一整包」傳來的時候。比如壓縮檔、共用雲端、隨身碟。

另一件必須寫清楚的事。依 CSA 的研究筆記,截至發布時,沒有公開來源回報實際攻擊。這篇不在講已經有人中招,它講的是一個還沒大量發生、但入口很具體的風險。

一個資料夾的剖面圖,表面看起來乾淨,底下藏著一個半開的隱藏抽屜,抽屜裡透出一道光

這類「看起來正常的東西裡有陷阱」的情況,在《AI 幫你裝的套件,可能是駭客等你上鉤的陷阱》那篇也出現過。套件是名字看起來合理,這次是資料夾看起來普通。

現在修好了嗎

這一節我只能講「披露當時」的狀態,不講現在。

僅就披露當時而言,依 Manifold 與 CSA 的資料,OpenAI 已經為 Codex CLI 發布了編號 CVE-2026-19592 的修補,Cursor 和 Claude Code 的 core.fsmonitor 路徑也已修正,但 Claude Code 另有一條叫 ultrareview 的路徑,披露時還沒修。同一時間,也有一些工具、一些路徑還沒修。各來源對細節的說法不完全一致。

我沒有查到十月之後的更新公告。所以我不替任何一家工具下結論,不寫誰修好了,也不寫誰沒修。各家的狀況會變,請你用你自己的工具,去看它的官方公告。

就算官方說修好了,「別人傳來的檔案,先看過再讓工具讀」還是好習慣。工具會修,下一種手法也會出現。習慣比版本號耐用。

三步驟,收到別人的專案資料夾

步驟一,確認來源。 這包檔案是誰給的?是你預期要收的嗎?如果有一點點不確定,換個管道問對方。比如傳個訊息,或打通電話。花一分鐘,問的是「這包是你傳的嗎」。

步驟二,先用眼睛看,不要先讓 AI 跑。 解壓縮之後,先把檔案總管或 Finder 的「顯示隱藏檔案」打開,看看資料夾裡有沒有 .git。

有的話,而你只是想請 AI 讀內容、看架構,就把 .git 整個移出去,再交給工具。專案內容不會少,只是少了修改歷史。對不寫程式的人來說,這等於把那個隱藏抽屜整個拿掉。AI 讀不到那份設定,自然不會去呼叫裡面的程式。

步驟三,真的要執行,就隔離。 要把別人的專案跑起來,用一台不放重要資料的電腦,或虛擬機器(在你電腦裡劃出一塊獨立的假電腦),或雲端臨時環境。你的主力電腦如果放著 SSH 金鑰(連伺服器的通行證)、雲端帳號、客戶檔案,更該這樣做。比如你替客戶做事,客戶的資料就在那台電腦裡,更不能拿來試別人的東西。

另外有人建議,可以在 git 裡設一行 git config --global core.fsmonitor false,把這個功能全域關掉。CSA 的研究筆記有提到這個做法,但 Manifold 原文沒有提,git 官方文件也沒背書。git 設定的優先順序,是專案自己的設定壓過全域設定。所以資料夾裡 .git/config 已經寫好的 fsmonitor,這一行擋不住。它不能取代步驟二,你想用的話,只當額外的保險。

三步驟的流程圖示,依序是確認來源的對話框、移走隱藏資料夾的手、在獨立隔間裡執行專案

把它寫進你交代 AI 的規則

用 DEL 框架來看,你交代 AI 的是這三件事。

  • Direction 是,我要你幫我看懂這個專案。
  • Expectation 是,我預期你只讀內容,不執行任何東西。
  • Limitation 是,資料夾裡來路不明的檔案,不准自動執行,要執行前先問我。

最後這一格,可以直接貼進對話開頭。

情境:收到別人傳來的專案,請 AI 幫忙看架構時。 流程位置:第三步,接在確認來源、移走 .git 之後。

這個專案資料夾來自外部。請只讀取檔案內容並說明架構,不要執行資料夾裡的任何腳本或指令。如果你覺得需要執行某個東西,先停下來告訴我是哪一個、為什麼。

要誠實講一件事。這句話擋不住工具自己的啟動動作。GitSpawn 的重點,就是它發生在你下指令之前。所以這句 prompt 是第二道防線,第一道是步驟二,先把 .git 拿掉。

想把 Limitation 寫得更扎實,可以讀《用 Limitation 守住你真正在意的那條線》。

下次收到壓縮檔

回到開頭那個案子。下次對方傳壓縮檔來,先花一分鐘看有沒有 .git。

三件事,現在就能做。

  1. 收到別人的專案資料夾,先確認是誰給的。
  2. 解壓縮後找有沒有 .git 隱藏資料夾,有就先移走,再給 AI 讀。
  3. 要執行別人的專案,用不放重要資料的環境。

兒子睡著後那 90 分鐘很珍貴,我不想拿來處理被亂動過的電腦。多花一分鐘看一眼,晚上就能放心睡。

等你的專案準備好要上線了,再回頭看《AI 幫你寫的程式碼,先問這五個問題再上線》。