黑客是怎么通过一行Python,接管你整个GCP项目AIBot的?

admin 2026-07-13 04:41:24 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文解析DialogflowCX的RogueAgent漏洞。因共享CloudRun缺乏隔离,攻击者仅凭编辑权限即可通过Python代码块覆盖可写初始化文件,接管同项目所有机器人并窃取对话。沙箱还存在绕过VPC与泄露元数据隐患。建议排查审计日志,严格管控含代码执行系统的编辑权限。 综合评分: 91 文章分类: 云安全,漏洞分析,AI安全,漏洞预警,数据安全


cover_image

黑客是怎么通过一行Python,接管你整个GCP项目AI Bot的?

原创

Kit Chung Kit Chung

安全圈动向

2026年7月10日 08:06 广东

在小说阅读器读本章

去阅读

今天咱们来扒一扒最近安全圈里一个极其硬核、且非常有意思的云原生AI安全漏洞。

在这个“万物皆可大模型”的时代,AI安全往往被大家等同于“提示词注入”或者“越狱”。但今天我要给大家分享的这个漏洞,完全不按套路出牌——它根本没碰AI模型,而是直接从底层基础设施“偷家”了。

就在上个月(2026年6月),Google刚刚彻底修复了其Dialogflow CX(一款企业级AI聊天机器人构建平台)中的一个高危漏洞。安全公司Varonis发现了它,并赋予了它一个非常拉风的名字:Rogue Agent(流氓特工)

这个漏洞有多离谱?简单来说:只要你拥有一个看似人畜无害的“编辑权限”,你就能悄无声息地接管同一个Google Cloud项目中所有的聊天机器人,窃取用户的实时对话数据,甚至伪造Bot的身份给用户发钓鱼信息!

这中间到底发生了什么?来,我们泡杯茶,一起深挖一下这个漏洞的技术细节和复现路径。


🔍 表面现象:一个“只读”编辑的逆袭

想要搞事,门槛其实很微妙。这并不是一个那种能在互联网上随便拿个扫描器就能打穿的未授权RCE。攻击者(通常是内鬼或者被盗号的开发者)需要拥有一个特定权限:dialogflow.playbooks.update

这个权限听起来就是个更新剧本(Playbooks)的普通功能对吧?但在Dialogflow里,有一个叫 Code Blocks(代码块) 的高级功能。为了让Bot更聪明,Google允许开发者用Python写自定义的Code Blocks,用来校验用户输入、控制逻辑流或者调用外部工具。

这里的盲点在于:很多人把这个权限当成了“内容编辑权限”,但实际上,在云原生环境下,它等同于“代码执行权限”。


💥 核心原理解析:共享沙箱的隔离崩塌

漏洞的爆发点,就在于Google托管这些Code Blocks的底层环境——Cloud Run

我们都知道,为了降本增效,云厂商往往会复用底层资源。在这个场景下,同一个GCP项目里所有使用了Code Blocks的Agent,其实都是跑在同一个被Google管理的Cloud Run实例里的。

这个环境对客户是黑盒的,不可见也不可控。但Varonis的研究员在深挖时发现了一个致命的架构缺陷:这些Agent之间,根本没有做真正的隔离!

核心技术路径揭秘:

  1. 致命的包裹函数:

    当一个Agent运行你的Python代码时,底层并不会直接跑,而是会把你的代码追加到一段Google的“内部初始化代码”后面,然后再丢给Python的 exec() 函数去执行。

  2. 暴露的全局变量:

    这段初始化代码定义了你的代码能接触到的上下文(Context)。比如包含了所有对话历史的变量、包含了Session ID的状态信息,以及一个叫 respond() 的函数(用来让Bot回话)。

  3. 大门敞开的配置文件:

    最要命的是,研究员发现负责做这个代码包裹操作的文件叫 code_execution_env.py。重点来了兄弟们——这个文件在共享环境里竟然是可写的(Writable)!

🛠️ 攻击重现:狸猫换太子

既然文件可写,那黑客的操作空间就太大了。完整的攻击链如下:

  1. 植入后门:

    攻击者利用自己手里那个合法的Agent,写进一段恶意的Code Block。

  2. 覆盖原文件:

    这段代码干了一件事:从黑客自己的服务器上下载一个被魔改过的 code_execution_env.py,然后直接在运行的容器里把原生文件覆盖掉

  3. 全面感染:

    从这一刻起,因为所有Agent都在共用这个环境,所以每一个Agent在执行Code Block时,跑的都是黑客的魔改版本!

  4. 隐蔽驻留与钓鱼:

    恶意版本与合法代码处于相同的作用域(Scope),它可以堂而皇之地调用 respond()。黑客可以在对话中强行插话:“系统检测到您的会话已过期,请重新输入密码验证”,然后美滋滋地将用户输入的密码发送回自己的服务器。

防守盲区: 为了不留痕迹,黑客覆盖完底层文件后,还可以把Dialogflow控制台里的恶意代码删掉。这样你在前端页面看到的一切都很正常,但底层的容器里,毒瘤已经深深扎根并持续运行了。


🚨 “买一送二”:沙箱还漏了哪些风?

除了文件覆盖,研究员在测试这个沙箱时,还附带发现了两个极具代表性的云安全隐患:

  • VPC边界穿透:

    这个Code Block环境居然有不受限制的出站互联网访问权限。攻击者直接调个基础的 urllib 库,就能把窃取的数据传回外网C2服务器。更离谱的是,这个环境在Google Cloud的VPC Service Controls(防止数据从受保护服务中泄露的安全边界)之外。这就好比你在金库大门上装了世界上最强的锁,却忘了修地下室直通外面的地道。

  • 实例元数据(IMDS)泄露:

    这是一个比较经典的云安全问题了。环境暴露了内部的IMDS端点。虽然获取到的Google托管服务账号权限很低,没造成严重后果,但从架构设计的绝对安全角度来看:一个用来跑不受信任代码的沙箱,压根就不应该能访问到IMDS。


📊 总结与反思:这和普通的AI漏洞有啥区别?

为了让大家更直观地理解,我做了一个简单的对比:

| 对比维度 | 常见的AI安全漏洞 (如 Prompt Injection) | Rogue Agent (本次漏洞) | | — | — | — | | 攻击目标 | 欺骗大语言模型 (LLM) | 破坏底层云基础设施隔离 | | 技术手段 | 构造特定的自然语言/对抗样本 | Python代码注入、利用文件系统权限 | | 防御难度 | 极高 (模型不可解释性强) | 相对容易 (打补丁、修复架构隔离即可) | | 日志可见性 | 难溯源,多混杂在海量正常对话中 | 几乎为零,Cloud Logging无法记录GCP内部容器的文件变更 |

这个漏洞从2025年11月被报告,到2026年6月才被彻底修复,历时7个月,甚至没有分配CVE编号。这是因为问题出在Google的自托管环境里,属于服务端的架构设计缺陷。

对于我们普通的开发者和IT运维人员来说,这给我们敲响了警钟:

  1. 排查你的日志:

    如果你在修复前用了Code Block,赶紧去翻翻 DATA_WRITE 审计日志,看看有没有异常时间段、异常IP修改过Playbooks。

  2. 敬畏“编辑权限”:

    再次强调,在含有自定义代码能力的系统中,内容编辑权限就等于运行时控制权限! 永远不要把这种权限随意下发给非核心人员。

好了,今天的硬核技术分享就到这里。你公司里的AI服务有没有遇到过类似“权限一把梭”的情况?欢迎在评论区和我吐槽交流!别忘了点个赞和在看,我们下期见!👋


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全圈动向 Kit Chung Kit Chung《黑客是怎么通过一行Python,接管你整个GCP项目AI Bot的?》

评论:0   参与:  0