實證研究 發布於 AIA: 2026年8月25日

Rogue Agent:一個 Dialogflow CX 權限就能入侵整個專案的共用執行環境

Varonis 在自己的 Google Cloud 環境中證實,只要擁有更新一個 Dialogflow CX(Google Cloud 用來建立對話式 AI Agent 的平台)Agent 的權限,就可能持續控制同一專案其他 Agent 共用、由 Google 管理的 Cloud Run(Google 的容器執行服務)執行環境。惡意的 Playbook Code Block(Playbook 中可執行自訂 Python 程式碼的區塊)覆寫 code_execution_env.py 後,遭修改的執行環境可以攔截對話、竄改即時回覆、把資料傳到外部,並查詢執行個體中繼資料服務(IMDS,雲端執行個體用來取得自身設定與服務帳號 token 的內部服務)。Google 已於 2026 年 6 月完成修正。

Privilege EscalationData ExfiltrationRuntime IsolationTool AuthorizationEnterprise AI
6 項對應的 AIDEFEND 防禦手法
來源: Rogue Agent: How a Single Code Block Could Hijack Your AI Conversations in Google's DialogFlow 
作者: Daniel Reyhanian (Varonis Threat Labs)
原文發布: 2026年7月7日

威脅分析

  • 攻擊起點是範圍看似有限的合法權限。攻擊者必須在一個 Dialogflow CX Agent 上擁有 dialogflow.playbooks.update,這項權限原本用來編輯該 Agent 的 Playbook。
  • 惡意 Code Block 讓 Agent 設定能寫入受管理的執行期檔案。惡意 Playbook 下載經攻擊者修改的 code_execution_env.py,再覆寫 Google 管理 Cloud Run 環境中用來執行 Playbook Code Block 的檔案。
  • 同一專案的多個 Agent 共用該執行環境。這個檔案不只影響被修改 Playbook 所屬的 Agent;其他 Agent 日後執行 Code Block 時,也會載入同一個已遭入侵的環境。
  • 攻擊者可以還原可見的設定變更。完成覆寫後,Playbook 可以還原,但遭竄改的執行期檔案仍持續生效。Varonis 表示,Cloud Logging 沒有記錄檔案遭取代,也沒有記錄被注入的邏輯。
  • 這個共用執行攔截點帶來多條影響路徑。它可以讀取對話 history 與工作階段 state、透過不受限制的對外連線送出資料、利用 respond() 竄改回覆並插入釣魚提示,也可以查詢 IMDS。
  • IMDS 取得的結果有明確限制。研究人員取得的是 Google 管理、低權限服務帳號的 token;來源也沒有指出這枚 token 進一步造成權限提升。

適用的 6 項 AIDEFEND 防禦手法

AID-H-021.002
Runtime Integrity Enforcement (Signed Configurations)
極高
每次呼叫 Code Block 前,都要把實際執行環境與已簽署清單中的預期設定比對。即使可見的 Playbook 已還原,只要 code_execution_env.py 不符合核准版本,就必須停止執行。這項控制同時針對持續控制機制與記錄缺口。
AID-I-001.002
MicroVM & Low-Level Sandboxing
極高
每個 Agent 或每次呼叫都要使用獨立且用完即丟的沙箱,不得共用可寫的執行期層;工作負載內也要禁止存取主機管理介面與 IMDS。如此可避免單一 Agent 的 Code Block 變成整個專案的執行攔截點。
AID-H-003.010
Deployed AI Software Vulnerability Remediation Lifecycle
極高
確認受管理的 Dialogflow 服務已使用 Google 於 2026 年 6 月修正後的控制面,再回溯檢查歷史 Playbook 更新,並重新測試共用檔案覆寫、跨 Agent 持續控制、對外連線與 IMDS 存取。供應商修正關閉已揭露路徑;客戶端回查則用來判斷修正前是否有人嘗試利用。
AID-H-018.002
Policy-Based Access Control
高
新增可執行 Code Block 的權限,必須與一般 Playbook 編輯分開。失敗即阻擋的政策要驗證操作人、專案、Agent、操作類型與程式碼管理權限,不能讓 playbooks.update 自動涵蓋所有可執行能力。
AID-I-001.004
Sandbox Network Egress Restrictions
高
網路政策必須在受管理執行環境外層強制執行:對外連線預設全部阻擋,不得連到 IMDS,只開放核准的目的位址。即使 Code Block 已取得執行能力,仍可限制對話外洩與 C2 通訊。
AID-H-006.002
Text, Markup & Structured Output Sanitization and Release Gate
高
聊天機器人回覆必須先暫存,再由發布檢查與核准的 Playbook 及政策比對。無法追溯到可信回覆邏輯的重新驗證用連結、憑證要求與隱藏標記都要拒絕。這項控制只限制釣魚回覆分支,不會修復底層執行環境遭入侵。

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

  • 向 Google Cloud 確認受影響的 Dialogflow CX 環境已使用修正後的控制面,並在非正式環境重測完整的覆寫與跨 Agent 持續控制路徑。
  • 盤點擁有 dialogflow.playbooks.update 的身分,確認其中哪些還能新增或修改 Code Block。可執行程式碼的管理權限必須與一般 Playbook 維護分開。
  • 檢查歷史 Playbook 版本、Code Block 原始碼、從公開儲存空間下載檔案的行為、異常 respond() 回覆、對外連線目標與 IMDS 存取,特別是高權限變更前後的活動。
  • 要求 Code Block 使用獨立且用完即丟的執行環境,並驗證不同 Agent 或租戶之間沒有共用可寫的直譯器、函式庫、快取或輔助檔案。
  • 在工作負載外阻擋 IMDS,並將對外連線預設設為拒絕,只開放核准 Playbook 確實需要的具名目的位址。
  • 建立獨立的執行期檔案完整性與回覆發布證據,因為原始研究指出,已揭露的 Cloud Logging 路徑沒有記錄覆寫或注入邏輯。

結論

Rogue Agent 把單一 Agent 的合法更新權限,轉換成對整個專案共用執行程式碼的控制。影響範圍來自受管理執行環境的邊界,而不只是遭修改的 Playbook。

AIDEFEND  把主要中斷點放在 AID-H-021.002 的已簽署狀態比對,以及 AID-I-001.002 的逐 Agent 隔離。AID-H-018.002 限縮誰能加入可執行邏輯,AID-I-001.004 與 AID-H-006.002 則分別限制取得程式碼執行後的對外連線與回覆路徑。