嗨,我是查理。
在接下來 30 天,我想帶大家看看每天都在發生的事:AI 資安(AI Security)。
在開始今天的內容前,先上圖,讓大家快速理解我要分享的內容:
我們用 AI 工具(Coding Agent)寫程式。你打幾行字,它自動讀檔、改程式碼、裝套件。但有個問題你有沒有想過:如果它把你的檔案改壞、刪掉重要資料、甚至偷傳密碼,你查得出那是它幹的嗎?
這 30 天,我要帶大家當偵探。用開源工具在 Agent 不知情下,確認它有沒有按我們的要求做事。我會用 Cursor(改不動的閉源工具)和 Pi Agent(可以自己改的開源工具)來實驗。
不聊空泛理論,只從最基本的「它留下什麼紀錄」開始。每篇最後都有個 5 分鐘的小練習,你可以立刻在自己的電腦上試試看。
那麼,從我親身遇到的一個怪事開始。
我們團隊用 AI 寫程式。前幾天我讓它寫一支讀公開網頁的小腳本,那些資料都在網路上,誰都能看,殊不知爬取結果中文印成亂碼。修好後我想追溯:為什麼這樣寫?
翻了翻電腦,完全查不出來。檔案只記了被改過,改了哪幾行沒有。更詭異的是,我早就裝了「動作監視器」(Hook),十一天零筆紀錄。
一個能改你檔案的隊友,你卻問不出它做了什麼。這本身就是個資安漏洞。
我讀了開源 AI(Pi Agent)的安全文件。作者寫得直白:
責任全在你。我得搞清楚三個問題:
這 30 天我用 Cursor(改不動的閉源)和 Pi(可改的開源)做對照。一個證明查不動,一個證明改得動。
我裝了 Hook 腳本,以為能記下 AI 的一舉一動。結果呢?
9 月 3 日~14 日,四次測量,全是 0 筆。
這不是 AI 沒做事,而是監視器看不到。
我開個乾淨資料夾做對照實驗,才發現兇手。
Windows 系統在傳文字給 Python 時,悄悄塞了 3 個肉眼看不見的隱形位元組(UTF-8 BOM)。Python 一讀第一行就當場崩潰。
Windows 把資料交給 Python 時,最前面多塞了 3 個你看不到的符號(BOM,位元組順序標記)。像信封多貼了透明標籤,程式當成第一個字,整段就讀錯停掉——監視器跟著沒跑。記事本不會顯示它;這次也不是我腳本寫錯,是傳資料時多塞的。 解法其實不難:讀資料前先去掉那三個符號就行。難的是....腳本默默死掉時,沒有任何地方告訴你監視器已經停了。
但這還不是最糟的。
系統明明知道腳本出錯了,卻決定假裝沒事。這叫 Fail-open 機制。
規則很白:腳本如果出錯,就讓 AI 照常工作,錯誤訊息只丟到一個不起眼的角落。
用意是「別讓壞掉的監視器擋住你寫程式」。
代價呢?一個故障十一天的監視器,我完全不知道。
這比根本沒裝還危險。因為它給了你虛假的安全感——你以為在看著,其實在被蒙著眼睛。
改好 BOM,紀錄終於工作。我以為搞定了。
然後我叫 AI 查今天天氣,它很快回答。我回頭翻剛才的紀錄檔。
完全找不到搜尋痕跡。零筆。
為什麼?因為 AI 的網路搜尋(WebSearch)和頁面抓取(WebFetch)動作,根本不在本機執行,它們在 Cursor 的遠端伺服器跑。
本機監視腳本看不到遠端的動作。
我叫 AI 查天氣,它回答了。但是,當我想回頭查:它到底搜了什麼、依據什麼? 翻了三個地方,每個都只答一半:
| 你去找的地方 | 它告訴你什麼 | 它沒告訴你什麼 |
|---|---|---|
監視檔(Hook 寫的 hooks.jsonl) |
本機讀檔、寫檔、跑指令,有記錄 | 搜尋在 Cursor 雲端跑,本機監視器看不到 |
| 對話記錄 | 你確實叫 AI 去搜了 | 搜了什麼、結果是什麼,被系統塗黑(REDACTED) |
| 硬碟暫存 | 確實多了一個抓下來的檔案 | 從哪個網址、用什麼關鍵字抓的,沒寫 |
三份加起來,還是拼不出完整經過。這就是「查不出來」長什麼樣子。在這種局面下,我們要防的是下面三種狀況:
30 天防三種狀況:
在沒有軌跡的現在,我們一個都查不出來。業界(Elastic 研究員 Mika Ayenson)指出同樣難題:AI 打指令和人打一模一樣,系統分不出誰決定的。這叫「意圖歸因斷裂」。
今天不需要寫複雜的程式,請花 5 分鐘在你的電腦上敲敲看以下指令,檢查你自己的開發環境:
第 1 步:檢查你的專案有沒有時光機
打開終端機,在你的專案目錄下輸入:
git rev-parse --is-inside-work-tree
如果出現 fatal: not a git repository,代表你的專案連最基本的版本控制都沒有。一旦 AI 把你的檔案改壞或偷偷刪掉,你連比對前後差異的機會都沒有。
第 2 步:找找看 AI 在你的電腦裡留下了什麼
如果你平常也用 Cursor,可以試著打開使用者的個人目錄(Windows 下通常在 C:\Users\你的名字\.cursor\projects),找找看裡面的資料夾。你會發現它其實在你的專案之外,偷偷存了大量的對話與暫存檔案。
第 3 步:想一個問題
如果明天公司的主管跑來問你:「昨天系統被刪掉的那行程式碼,到底是你刪的,還是 AI 幫你改壞的?」
你現在拿得出證據證明自己的清白嗎?
明天我回去翻那支爬蟲,想確認一件事,就是那次修改是什麼時候發生的。
今天對應的威脅: T1(外部內容操控)、T2(抄近路)、T3(藉 Agent 規避控制)全中,因為在沒有完整軌跡的情況下,這三種我們目前都查不出來。
引用來源:
SECURITY.md)