部落格 發布於 AIA: 2026年7月7日

AgentFlayer:企業 AI 連接器如何變成零點擊的資料外洩路徑

Zenity 展示一條零點擊外洩路徑:使用者只是把不可信文件交給 ChatGPT 摘要,文件裡的隱藏指令卻要求 ChatGPT 連接器(讓 ChatGPT 讀取已授權 SaaS 資料的工具)搜尋已連接的 Google Drive,找出 API key,再把這把 API key 放進 Markdown 圖片 URL。當用戶端渲染回覆並載入那張看似安全的 Azure Blob(Microsoft Azure 的物件儲存服務)圖片時,API key 就會隨網址參數送到攻擊者可觀察的位置。核心教訓是資料流向控制:連接器可以為了任務讀取資料,不代表讀到的值可以被放進遠端圖片、網址或任何會把資料送往外部的功能。

Indirect Prompt InjectionData ExfiltrationSink EnforcementAgentic AIEnterprise AI
7 項對應的 AIDEFEND 防禦手法
來源: AgentFlayer: ChatGPT Connectors 0click Attack 
作者: Tamir Ishay Sharbat
原文發布: 2025年8月6日

威脅分析

  • 攻擊入口是不可信文件。 攻擊者把提示詞注入攻擊(prompt injection)文字藏在檔案裡,例如用很小或不易察覺的文字,等待使用者把檔案交給 ChatGPT 摘要、分析或問答。
  • 不可信文件會惡意引導模型改寫任務。 使用者原本只要求摘要文件;隱藏指令卻要求 ChatGPT 搜尋已連接的 Google Drive 或其他 SaaS 連接器,尋找 API key,並避免告知使用者任務已經偏離。
  • 連接器替攻擊流程取回機敏值。 ChatGPT 使用的是受害者已授權的連接器權限,因此可能讀到 Drive、SharePoint、GitHub 或其他企業資料來源中的 secrets。問題不是連接器讀資料本身,而是讀到的值被拿去做不符合任務目的的資料流向。
  • Markdown 圖片載入變成外洩出口。 攻擊回覆把 API key 放進 Markdown 圖片 URL。用戶端渲染回覆時會載入圖片,HTTP 請求就會把 API key 當成網址參數送出去;使用者不需要點擊連結。
  • 可信網域不代表可信資料流向。 Zenity 使用 Azure Blob 這類看似可信的雲端網域搭配記錄服務觀察請求,說明只檢查網域會漏掉真正問題:機敏值已經被放進完整 URL、查詢參數或重新導向路徑。
  • 防線要跟著資料值走。 文件、連接器搜尋、模型回覆和圖片載入各自看起來都是正常功能;只有把 API key 這個值從來源到 sink 的流向串起來,才看得到外洩鏈。

適用的 7 項 AIDEFEND 防禦手法

AID-H-018.005
Value-Level Capability Metadata & Data Flow Sink Enforcement
極高
資料來源與機敏值標記應在連接器讀出資料時立即套用。如果某個值疑似 API key、OAuth token 或 secret,就要禁止它被放進 Markdown 圖片網址、遠端圖片、模型呼叫、查詢參數或任何外部 HTTP 請求。
AID-H-018.004
Intent-Based Dynamic Capability Scoping
極高
能力範圍簽章可以防止任務被文件內容擴大。使用者要的是文件摘要,不是搜尋整個 Drive 裡的 secrets;連接器工具調度器應根據可信使用者請求決定可用工具,不能因為文件裡藏了指令就開放跨 SaaS 搜尋。
AID-H-019.001
URL Normalization & Allowlist Filtering
極高
安全瀏覽與 URL 檢查不能只看網域。系統要檢查正規化後的完整網址、路徑、查詢參數和重新導向過程,確認機敏值沒有被夾在 Azure Blob 或其他可信雲端網域的 URL 裡。
AID-H-006.002
Text, Markup & Structured Output Sanitization and Release Gate
生成的 Markdown、圖片和遠端媒體在渲染前要先檢查並清理。網址驗證必須在瀏覽器或用戶端送出圖片請求前完成,否則外洩會發生在使用者看見回覆的同時。
AID-H-029.002
Lifecycle-Stage Authorization Gate
已連接的 SaaS 檔案要先確認能不能被這次任務使用(例如能不能被搜尋、放進這次對話的推論內容),不是連接器讀得到就自動能用。secrets 或高機敏文件不能只因連接器讀得到,就直接進入這次推論上下文;系統要確認這次使用者請求真的需要搜尋這類資料,並取得明確授權。
AID-D-003.002
Sensitive Information & Data Leakage Detection
在模型生成的回覆送出前,掃描 Markdown 圖片來源與網址參數是否含有 API key,並產生結構化的機敏輸出 finding。這項控制只負責偵測;AID-H-006.002 或 AID-H-018.005 才負責阻止內容渲染或網路送出。
AID-E-001.001
Root & Long-Lived Credential Object Eviction
如果外洩的 API key、client secret 或開發者憑證可能已經透過圖片請求送出去,就要到當初簽發它們的地方,把這些長期有效的憑證停用、換發新的。secrets 外洩偵測一旦觸發,就自動啟動這個撤換流程;因為這些憑證不像 session 會自己過期,不主動撤掉就會一直有效。

身為資安防禦者,我們應該這麼做

  • 把上傳文件的上下文和連接器權限分開。檔案不能自行把任務擴大成搜尋 Drive、SharePoint、OneDrive、GitHub 或電子郵件。
  • 替連接器輸出加上來源和機敏程度標籤,阻止高機敏值進入遠端圖片、網址、訊息和模型呼叫內容。
  • 載入前檢查生成的 Markdown。圖片、連結、預覽和遠端媒體都要視為網路動作,不能當成無害格式。
  • 把連接器搜尋、網址生成和圖片載入事件串在一起記錄,才能偵測「文件到連接器,再到圖片」的完整外洩鏈。
  • 準備 API key、OAuth token 和開發者 secrets 的輪替流程,因為 AI 連接器可能讓這些機敏值被意外送出。

結論

AgentFlayer 最值得注意的是,每一步看起來都像正常功能:上傳文件、搜尋連接器、產生 Markdown、載入圖片。真正的安全邊界不是功能名稱,而是資料值能不能從企業連接器被送到外部服務。AIDEFEND  的防線要沿著這條資料路徑部署:能力範圍限制連接器能做什麼,資料標記和用途標籤判斷哪些值是機敏資料,URL 與 Markdown 清理在用戶端送出請求前阻止外洩,secrets 偵測與撤銷輪替則處理已經疑似送出的憑證。