你請 AI 整理一張公開 Issue,它卻開始讀私人專案。問題不只在回答有沒有錯,還在於:外部資料是否改變了工作,以及工具是否允許它把要求變成操作。
這篇是 RuleArena「Agentic SOC E03」的延伸筆記。我會把影片中的兩個研究放回各自條件,整理一份部署前可以拿來核對的表。它們是公開研究示範,不是 RuleArena 自行重現,也不是某家公司已確認的大規模外洩事件。
先分清楚:任務與待讀資料
「幫我摘要這份文件」是使用者交代的工作;文件裡的文字是處理對象。文件若要求 AI 改做別的事,那仍是文件內容,不能自動取得使用者指令的身分。
Prompt Injection(提示詞注入)就是輸入內容試圖改變模型原本應遵循的工作或規則。直接在對話中介入,是 Direct;藏在網頁、文件或工具回傳資料裡,則是 Indirect。本集重點是後者。OWASP LLM01:2025 有相應分類。
讀到可疑文字、回答被誤導、提出工具要求、真正讀取資料,是不同的觀察結果。不要只憑一句奇怪回答,就把它稱為資料外洩。
GitHub MCP 研究:工具可信,內容仍可能不可信
Invariant Labs 在 2025 年展示:公開 Issue 可影響 Agent,讓私人 Repository 資料進入公開 PR。研究環境有相應存取能力,並討論了 Always Allow 省略逐次確認的風險;不能推論每個 MCP 連線都會如此。原始研究
圖一:Invariant Labs 官方原圖,僅轉為 PNG 顯示,未重畫或修改標籤。圖中 public README 是公開 PR 中的輸出內容;研究前提包含相關私人 Repo 存取能力,原文另討論 Always Allow。這是研究示範,不是 RuleArena 重現或真實大規模外洩紀錄。圖片與研究來源。
MCP(Model Context Protocol)提供 AI 應用程式和外部資料、工具溝通的共同方式。接上 GitHub,只能說介面接通;這次任務允許讀哪個專案、能不能寫入,仍要由實際系統設定與執行端控制。MCP 協定本身不替每個應用程式決定如何使用模型與內容。MCP 架構文件
我的部署原則是:能呼叫一個工具,不代表這次任務就能對所有資源使用它。
Comet 研究:摘要頁面也要看登入權限
Brave 的 2025 年研究,以摘要網頁為起點,示範 Agent 跨站讀取並回傳資訊。它利用的是使用者的既有登入能力,不代表網站密碼被破解。Brave 原文
圖二:取自 Brave Software 在原文內嵌的官方研究影片預覽,保留原比例與原有遮蔽,未重製介面。這張圖呈現示範起點,本身不能證明後續讀信或資料外傳;完整過程請看Brave 原文「Attack demonstration」及官方示範影片。
修補時序補充:原文記載 2025/8/13 測試認為問題似已修補,但發文後又補註尚未完全緩解。影片引用的是前一測試節點;閱讀時應一併看後續補註,不能據此判定目前版本安全或仍有同一漏洞。
對我而言,這個案例帶來的問題很具體:只是摘要討論串,為什麼同一項工作還需要操作信箱與其他已登入網站?把權限縮到任務實際需要的範圍,比事後問 AI 有沒有守規矩更容易核對。
沒有外洩,要再問是哪一層沒有放行
補充圖三:以下是 RuleArena 自製的結果判讀教學圖,用於比較模型與工具兩層;不屬於官方研究證據,也不是三次實驗或任何模型的成功率。
| 模型如何處理外部要求 | 工具端發生什麼事 | 這次能下的結論 |
|---|---|---|
| 沒有接受,維持原任務 | 沒有提出額外操作 | 本次未觀察到該要求轉成操作 |
| 接受並提出讀取要求 | 執行端因無權限而拒絕 | 模型已受影響;這筆操作被工具端擋下 |
| 接受並提出讀取要求 | 權限允許,工具執行 | 還要核對讀了什麼、送到哪裡及最終狀態 |
第二列很容易被誤讀成「模型擋住攻擊」。但真正發揮作用的是執行端授權。第三列也不能只看模型宣稱成功:工具可能報錯,或者只完成一部分操作,必須回到紀錄確認。
RAG、Coding Agent、SOC,要問不同的具體問題
RAG(檢索增強生成)先找資料,再整理答案。只做問答時,先注意答案是否被資料帶偏;如果後面還接了讀檔、寄信或內部 API,就要另外檢查操作能力。
Coding Agent 讀 README、程式註解或測試資料時,也會接觸第三方文字。文件內寫著某項要求,不會因此自動取得修改檔案或執行指令的授權。
SOC 的日誌、郵件附件、HTTP 欄位與情資也可能含外部使用者產生的內容。分析證據與封鎖 IP、停用帳號、隔離主機,是不同層級的任務。我會先把分析和回應權限分開,再決定哪些操作需要人工核准;這是本文的設計建議,不是宣稱這些系統都已被本頻道測出漏洞。
部署前,我會核對這 5 件事
- 工作範圍寫清楚。例如只摘要一份公開文件,不因連了某個帳號就順便開放私人目錄。
- 資源與動作都要限制。「可以用 GitHub 工具」仍太寬;還要知道是哪個 Repo、允許讀取或寫入。
- 授權留在模型之外。程式根據這次任務、呼叫者、目標與參數判斷,不接受模型自己宣稱「已核准」。
- 高風險操作要確認具體內容。核對即將執行的目標與動作,而不是只看先前同意過某個工具。
- 核對操作證據。留下必要的請求、允許/拒絕、結果與狀態變更;避免把憑證或不必要的敏感全文塞進紀錄。
這些控制方向可對照 OWASP 防護 Cheat Sheet 的 Agent-specific defenses、Least privilege 與 Monitoring。提示詞與內容標記可以是其中一層,不能取代執行端授權,也不保證回答一定正確。
第一個驗證任務不必使用攻擊指令。可以用合成資料,先測「只允許摘要 A 文件」的身分是否真的無法讀取 B 私人目錄,並確認拒絕結果有紀錄。這是在檢查存取控制,不是測出模型能防住提示詞注入。
我會把判斷留在三個可核對的問題上:資料從哪裡來?這次允許做什麼?實際做了什麼?
你目前使用的 Agent,能回答這三個問題嗎?
來源與閱讀範圍
- Invariant Labs|GitHub MCP Exploited:2025/5/26 公開研究。
- Brave|Indirect Prompt Injection in Perplexity Comet:2025/8/20 公開,閱讀時包含修補時序及後續補註。
- OWASP|LLM01:2025 Prompt Injection。
- OWASP|LLM Prompt Injection Prevention Cheat Sheet。
- MCP|Architecture overview。
資料查核:2026/10/21。案例用來理解信任與權限邊界,不作現行版本的測試報告。本文搭配 RuleArena Agentic SOC E03;影片公開網址尚待發布後加入。
封面:RuleArena 原創概念插畫,沿用既有文章的深色立體視覺風格,用紙張、玻璃分界與資料抽屜表達資料與操作權限的差別;非產品介面、研究實拍或防護有效性的證據。正文官方圖片與影片權利歸原作者。
相關影片:Untitled
翻譯插圖資產|網站永久圖片網址待同步
案例先採官方研究流程圖及官方影片預覽,圖片來源與條件見對應段落。下方只保留英文/簡中的結果分類教學補充圖,不將自製圖當成研究證據。補充圖的網站永久圖片網址仍待同步。
官方案例流程圖請見上方「GitHub MCP 研究」的 Invariant Labs 原圖;各語言沿用同一研究圖,未另造證據畫面。(English)
官方案例流程圖請見上方「GitHub MCP 研究」的 Invariant Labs 原圖;各語言沿用同一研究圖,未另造證據畫面。(简中)
