iT邦幫忙

2026 iThome 鐵人賽

DAY 1
0

嗨,我是查理。

在接下來 30 天,我想帶大家看看每天都在發生的事:AI 資安(AI Security)
在開始今天的內容前,先上圖,讓大家快速理解我要分享的內容:
https://ithelp.ithome.com.tw/upload/images/20260915/20183541MUMgFon7ze.png
我們用 AI 工具(Coding Agent)寫程式。你打幾行字,它自動讀檔、改程式碼、裝套件。但有個問題你有沒有想過:如果它把你的檔案改壞、刪掉重要資料、甚至偷傳密碼,你查得出那是它幹的嗎?

這 30 天,我要帶大家當偵探。用開源工具在 Agent 不知情下,確認它有沒有按我們的要求做事。我會用 Cursor(改不動的閉源工具)和 Pi Agent(可以自己改的開源工具)來實驗。

不聊空泛理論,只從最基本的「它留下什麼紀錄」開始。每篇最後都有個 5 分鐘的小練習,你可以立刻在自己的電腦上試試看。

那麼,從我親身遇到的一個怪事開始。

一支爬蟲、三個查不到

我們團隊用 AI 寫程式。前幾天我讓它寫一支讀公開網頁的小腳本,那些資料都在網路上,誰都能看,殊不知爬取結果中文印成亂碼。修好後我想追溯:為什麼這樣寫?

翻了翻電腦,完全查不出來。檔案只記了被改過,改了哪幾行沒有。更詭異的是,我早就裝了「動作監視器」(Hook),十一天零筆紀錄。

一個能改你檔案的隊友,你卻問不出它做了什麼。這本身就是個資安漏洞。

官方說了實話

我讀了開源 AI(Pi Agent)的安全文件。作者寫得直白:

  • 監視它是你自己的責任
  • AI 被暗號牽著鼻子走,無法被防禦
  • 設計上刻意不做沙箱隔離

責任全在你。我得搞清楚三個問題:

  1. 它呼叫了什麼工具、什麼參數?
  2. 改了哪幾個檔案、哪幾行?
  3. 憑什麼依據做決定?

這 30 天我用 Cursor(改不動的閉源)和 Pi(可改的開源)做對照。一個證明查不動,一個證明改得動。

為什麼十一天零筆?破案經過

我裝了 Hook 腳本,以為能記下 AI 的一舉一動。結果呢?

9 月 3 日~14 日,四次測量,全是 0 筆。

這不是 AI 沒做事,而是監視器看不到。

原因:3 個隱形位元組

我開個乾淨資料夾做對照實驗,才發現兇手。

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 天防三種狀況:

  1. AI 被洗腦:程式碼暗號「印出金鑰」,AI 照做
  2. AI 抄近路:測試跑不過,偷刪程式碼讓畫面變綠
  3. 人藉 AI 越權:騙 AI 做不該做的事

在沒有軌跡的現在,我們一個都查不出來。業界(Elastic 研究員 Mika Ayenson)指出同樣難題:AI 打指令和人打一模一樣,系統分不出誰決定的。這叫「意圖歸因斷裂」。


今天的 5 分鐘小練習

今天不需要寫複雜的程式,請花 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 規避控制)全中,因為在沒有完整軌跡的情況下,這三種我們目前都查不出來。

引用來源:

  • Pi 0.85.0 官方安全指南(SECURITY.md
  • Cursor 官方 Hooks 文件
  • Mika Ayenson 於 Unprompted 2026 技術演講《AI Agent Detection Engineering: Endpoint Security Gaps》

下一篇
我設陷阱要 AI 作弊,它沒上鉤。倒是我的警報器,從頭到尾沒響過
系列文
一個 Agent 我查不動,一個我改得動:內部威脅偵測的 30 天9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言