資安自動化與 AI / FIELD NOTE

Prompt Injection 是什麼?從 GitHub MCP 與 Comet 研究,看懂 AI Agent 的權限邊界

AI 讀到外部資料,不等於資料裡的要求已獲授權。本文從 GitHub MCP 與 Comet 公開研究,區分模型被影響、工具端拒絕與實際操作,並整理資料範圍、工具權限與操作紀錄的部署檢查表;保留研究條件及修補時序的限制。

Prompt Injection 是什麼?從 GitHub MCP 與 Comet 研究,看懂 AI Agent 的權限邊界封面

你請 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 原始研究流程圖:公開 Issue、私人 Repository 與公開輸出路徑

圖一:Invariant Labs 官方原圖,僅轉為 PNG 顯示,未重畫或修改標籤。圖中 public README 是公開 PR 中的輸出內容;研究前提包含相關私人 Repo 存取能力,原文另討論 Always Allow。這是研究示範,不是 RuleArena 重現或真實大規模外洩紀錄。圖片與研究來源。

MCP(Model Context Protocol)提供 AI 應用程式和外部資料、工具溝通的共同方式。接上 GitHub,只能說介面接通;這次任務允許讀哪個專案、能不能寫入,仍要由實際系統設定與執行端控制。MCP 協定本身不替每個應用程式決定如何使用模型與內容。MCP 架構文件

我的部署原則是:能呼叫一個工具,不代表這次任務就能對所有資源使用它。

Comet 研究:摘要頁面也要看登入權限

Brave 的 2025 年研究,以摘要網頁為起點,示範 Agent 跨站讀取並回傳資訊。它利用的是使用者的既有登入能力,不代表網站密碼被破解。Brave 原文

Brave 官方研究示範影片的原始預覽圖:Reddit 頁面與 Comet Assistant

圖二:取自 Brave Software 在原文內嵌的官方研究影片預覽,保留原比例與原有遮蔽,未重製介面。這張圖呈現示範起點,本身不能證明後續讀信或資料外傳;完整過程請看Brave 原文「Attack demonstration」及官方示範影片。

修補時序補充:原文記載 2025/8/13 測試認為問題似已修補,但發文後又補註尚未完全緩解。影片引用的是前一測試節點;閱讀時應一併看後續補註,不能據此判定目前版本安全或仍有同一漏洞。

對我而言,這個案例帶來的問題很具體:只是摘要討論串,為什麼同一項工作還需要操作信箱與其他已登入網站?把權限縮到任務實際需要的範圍,比事後問 AI 有沒有守規矩更容易核對。

沒有外洩,要再問是哪一層沒有放行

模型判斷與工具授權的三種教學情境

補充圖三:以下是 RuleArena 自製的結果判讀教學圖,用於比較模型與工具兩層;不屬於官方研究證據,也不是三次實驗或任何模型的成功率。

模型如何處理外部要求工具端發生什麼事這次能下的結論
沒有接受,維持原任務沒有提出額外操作本次未觀察到該要求轉成操作
接受並提出讀取要求執行端因無權限而拒絕模型已受影響;這筆操作被工具端擋下
接受並提出讀取要求權限允許,工具執行還要核對讀了什麼、送到哪裡及最終狀態

第二列很容易被誤讀成「模型擋住攻擊」。但真正發揮作用的是執行端授權。第三列也不能只看模型宣稱成功:工具可能報錯,或者只完成一部分操作,必須回到紀錄確認。

RAG、Coding Agent、SOC,要問不同的具體問題

RAG(檢索增強生成)先找資料,再整理答案。只做問答時,先注意答案是否被資料帶偏;如果後面還接了讀檔、寄信或內部 API,就要另外檢查操作能力。

Coding Agent 讀 README、程式註解或測試資料時,也會接觸第三方文字。文件內寫著某項要求,不會因此自動取得修改檔案或執行指令的授權。

SOC 的日誌、郵件附件、HTTP 欄位與情資也可能含外部使用者產生的內容。分析證據與封鎖 IP、停用帳號、隔離主機,是不同層級的任務。我會先把分析和回應權限分開,再決定哪些操作需要人工核准;這是本文的設計建議,不是宣稱這些系統都已被本頻道測出漏洞。

部署前,我會核對這 5 件事

  1. 工作範圍寫清楚。例如只摘要一份公開文件,不因連了某個帳號就順便開放私人目錄。
  2. 資源與動作都要限制。「可以用 GitHub 工具」仍太寬;還要知道是哪個 Repo、允許讀取或寫入。
  3. 授權留在模型之外。程式根據這次任務、呼叫者、目標與參數判斷,不接受模型自己宣稱「已核准」。
  4. 高風險操作要確認具體內容。核對即將執行的目標與動作,而不是只看先前同意過某個工具。
  5. 核對操作證據。留下必要的請求、允許/拒絕、結果與狀態變更;避免把憑證或不必要的敏感全文塞進紀錄。

這些控制方向可對照 OWASP 防護 Cheat Sheet 的 Agent-specific defenses、Least privilege 與 Monitoring。提示詞與內容標記可以是其中一層,不能取代執行端授權,也不保證回答一定正確。

第一個驗證任務不必使用攻擊指令。可以用合成資料,先測「只允許摘要 A 文件」的身分是否真的無法讀取 B 私人目錄,並確認拒絕結果有紀錄。這是在檢查存取控制,不是測出模型能防住提示詞注入。

我會把判斷留在三個可核對的問題上:資料從哪裡來?這次允許做什麼?實際做了什麼?

你目前使用的 Agent,能回答這三個問題嗎?

來源與閱讀範圍

資料查核:2026/10/21。案例用來理解信任與權限邊界,不作現行版本的測試報告。本文搭配 RuleArena Agentic SOC E03;影片公開網址尚待發布後加入。

封面:RuleArena 原創概念插畫,沿用既有文章的深色立體視覺風格,用紙張、玻璃分界與資料抽屜表達資料與操作權限的差別;非產品介面、研究實拍或防護有效性的證據。正文官方圖片與影片權利歸原作者。

相關影片:Untitled

翻譯插圖資產|網站永久圖片網址待同步

案例先採官方研究流程圖及官方影片預覽,圖片來源與條件見對應段落。下方只保留英文/簡中的結果分類教學補充圖,不將自製圖當成研究證據。補充圖的網站永久圖片網址仍待同步。

官方案例流程圖請見上方「GitHub MCP 研究」的 Invariant Labs 原圖;各語言沿用同一研究圖,未另造證據畫面。(English)

English — Three conceptual outcomes across model and tool layers

官方案例流程圖請見上方「GitHub MCP 研究」的 Invariant Labs 原圖;各語言沿用同一研究圖,未另造證據畫面。(简中)

简中 — 模型判断与工具授权的三种教学情境
ARTICLE IMAGE圖片放大檢視