一个编辑权限如何可能劫持项目中所有 Dialogflow CX 聊天机器人
Varonis 的 Rogue Agent 发现表明:对某个 Dialogflow CX 智能体的一个编辑权限,实际上等同于对一个共享且不可见的运行时——以及对该 Google Cloud 项目中所有聊天机器人的代码执行权限。
这是什么?
2026 年 7 月 7 日,Varonis Threat Labs 公开披露了 Google Cloud 的 Dialogflow CX 中的一个漏洞,并将其命名为 Rogue Agent。Dialogflow CX 是许多组织用于构建面向客户的聊天机器人的托管平台。该发现由 Varonis 报告、并经 The Hacker News 报道,表明:拥有单个智能体编辑权限的攻击者,可以接管同一 Google Cloud 项目中的所有聊天机器人——读取实时对话、窃取用户输入的数据,并让机器人发送由攻击者撰写的消息,例如伪造的重新输入密码提示。
这并非远程、未认证的攻击,也没有证据表明它曾在真实环境中被利用。利用条件是:对某个使用了 Dialogflow 的 Playbooks 功能和自定义 Code Blocks 的智能体,攻击者需拥有 dialogflow.playbooks.update 权限,这实际上将攻击者限定为恶意内部人员或被入侵的开发者账号。Varonis 于 2025 年 11 月报告了该问题;Google 于 2026 年 4 月发布了首个修复,并于 2026 年 6 月完全修复。未分配 CVE 编号。
工作原理
Code Blocks 允许开发者在聊天机器人的对话流程中插入自定义 Python 代码——用于校验输入或调用 API。该代码在 Google 托管的 Cloud Run 环境中运行,而结构性问题正在于此:同一项目中所有使用 Code Blocks 的智能体共享该环境的同一个实例,智能体之间没有真正的隔离。
当某个智能体运行 Code Block 时,开发者的代码片段会被附加到内部初始化代码之后,并交给 Python 的 exec() 函数。Varonis 找到了执行这一封装的文件——code_execution_env.py——它在共享容器中可写。由于该文件可被修改,一个 Code Block 便可用从攻击者控制的服务器下载的版本将其覆盖。
一个写权限 ──▶ Code Block 覆盖共享运行时文件
│
▼
此后每个智能体的 Code Block 都运行被攻击者修改的初始化代码
(相同作用域,相同的对话历史与回复函数访问权限)
自此,被修改的运行时会在项目中所有智能体的所有 Code Block 调用中执行,且与合法代码处于同一作用域。两个相关弱点使情况更糟:该沙箱具有不受限制的出站互联网访问——绕过 VPC Service Controls,并成为数据外泄与命令通道——并且能够访问实例元数据服务(IMDS),从而返回一个(低权限的)Google 托管服务账号令牌。本文不包含任何可操作的 payload;教训在于机制本身,而非某段脚本。
为何重要
令人不安的启示在于权限模型。在此处,一个看起来像内容编辑权的权限——「可以添加一个 Code Block」——实际上是一个位于客户无法查看或控制的运行时中的代码执行权。更糟的是,影响半径跨越了智能体边界:一个可写的智能体通过共享执行环境危及了它的「邻居」。
它同样打破了防御者关于可见性的惯常假设。覆盖操作发生在 Google 托管环境内部,Cloud Logging 既不记录文件更改,也不记录注入的代码。攻击者甚至可以在控制台中恢复原始的 Code Block 以掩人耳目,而被覆盖的文件仍在底层继续执行。当运行时既不可见、又在你自己的项目内部呈现多租户状态时,「供应商说无需修复」并不等于「你是安全的」。
防御措施
将智能体编辑权限视为运行时控制。 如果某个角色能够添加或修改可执行块、playbooks 或工具代码,就应将其按代码部署权限而非内容权限来对待。精确审计谁持有 dialogflow.playbooks.update(以及其他平台上的等价权限),并实施最小权限。
在未经证实之前,假定共享的托管运行时并未隔离。 当平台执行客户代码时,向供应商询问租户与项目如何分离、执行文件系统是否可写、以及一个智能体能否影响另一个。请以答案而非营销话术来构建你的威胁模型。
限制出站流量与元数据访问。 代码执行沙箱不应拥有开放的出站互联网访问,也不应能够访问 IMDS。在平台提供相应控制的地方,限制出站并封锁元数据端点;在无法控制的地方,则将智能体接触到的任何数据都视为可能被外泄,并尽量减少你提供给它的内容。
用你能看到的部分弥补日志空白。 尽管运行时内部的更改不可见,准备阶段的操作仍会留下痕迹。审查 DATA_WRITE 审计日志中意外的 playbook 更新,将其与异常的用户、IP 和访问时间关联,查询那些错误信息会暴露 Code Block 异常的失败请求,并定期确认控制台中的每个 Code Block 都是你批准的。
按信任边界隔离项目。 由于影响半径就是项目本身,请将高敏感度的聊天机器人放入独立项目,而不是与共享运行时的实验性或较低信任度的智能体共处一处。
状态
| 项目 | 详情 |
|---|---|
| 产品 | Google Cloud Dialogflow CX(Playbooks + 自定义 Code Blocks) |
| 发现者 | Varonis Threat Labs(「Rogue Agent」) |
| 前提条件 | 对某个 Code Block 智能体拥有 dialogflow.playbooks.update(内部人员/被入侵的开发者) |
| 影响 | 项目内跨智能体接管:对话窃取、通过机器人消息进行钓鱼、外泄通道 |
| 披露 | 2025 年 11 月报告;2026 年 4 月首个修复;2026 年 6 月完全修复 |
| CVE | 未分配 |
| 在野利用 | 据 Varonis 与 Google,暂无已知利用 |
本文出于防御目的总结已公开披露且已由厂商修复的研究,不包含任何可操作的攻击指令。
Sources
- → https://www.varonis.com/blog/rogue-agent-dialogflow-attack
- → https://thehackernews.com/2026/07/rogue-agent-flaw-could-have-let.html
- → https://www.securityweek.com/google-dialogflow-cx-bug-allowed-attackers-to-hijack-ai-conversations/
- → https://www.darkreading.com/application-security/dialogflow-cx-rogue-agent-flaw-enabled-ai-chatbot-data-theft