提示注入到数据泄露:三步实现
本文揭示了一种隐蔽的AI代理攻击链:通过提示注入,攻击者可在三跳内将敏感数据外泄。即便没有破坏性操作,数据也可能在常规HTTPS请求中悄然流失。文章批评了Kubernetes NetworkPolicy在检测此类攻击上的不足,并提出了基于域名的确定性出口控制作为解决方案。
安全领域常关注那些导致数据库删除或系统崩溃的攻击,但有一种更隐蔽的威胁正在悄然蔓延:攻击者无需执行任何破坏性操作,就能通过AI代理将数据外泄。本文描述了一种仅需三步的攻击链,展示了攻击如何在不触发警报的情况下完成。
第一步是提示注入。攻击者将恶意指令隐藏在看似无害的文本中,比如客户服务工单的正文。当AI代理被要求总结该工单时,它会读取并执行这条隐藏指令。研究表明,这类注入载荷已经广泛存在于网络中,尽管触发率不高,但攻击者只需一次成功即可。
第二步是MCP(Model Context Protocol)工具调用。代理会调用一个合法的HTTP工具,例如“发送到URL”功能,将数据发送至攻击者指定的地址。由于代理本身拥有工具权限,运行时环境不会认为有任何异常。
第三步是通过443端口进行出口。MCP服务器向攻击者的端点发起TLS连接,数据包通过标准的HTTPS请求离开集群。整个过程没有利用任何漏洞,没有窃取令牌,也没有绕过任何权限。
现有的Kubernetes NetworkPolicy在此类攻击面前显得力不从心。它基于IP和端口进行过滤,无法区分合法域名(如api.github.com)和攻击者域名,尤其是当它们共享相同的CDN时。安全团队往往陷入两难:要么允许所有443端口的出口,使代理能够访问任何网站;要么完全阻断出口,导致代理无法正常工作。
解决方案是引入基于域名的确定性出口控制。这种机制具备三个关键特性:基于工作负载的身份识别、域名感知能力(通过TLS SNI判断)、以及默认拒绝原则。只有明确允许的域名和端口的请求才能通过,其他所有出口请求都会被记录并拦截。
这种控制可以通过多种技术实现:Cilium的FQDN策略、服务网格的sidecar、或者云原生防火墙。虽然这些方法各有优劣,但共同点是它们能有效缩小攻击面,迫使攻击者使用更窄、更慢且更易被检测的通道。
当然,确定性控制并非万无一失。允许的域名仍可能被滥用,DNS通道也可能被利用。但即便如此,它极大地提高了攻击的门槛:数据不再能轻易直接流出到任意IP,而是被限制在少数已知域名内。每一次违规尝试都会被记录,为安全团队提供明确的线索。
对于运行AI代理平台的组织而言,立即行动至关重要。首先,审计所有MCP服务器的出口路径,明确哪些外部域名是必需的。然后,在至少一个命名空间中测试确定性控制策略,观察日志并逐步扩大范围。记住,在概率性攻击面前,概率性的防御最终会失败。只有确定性的边界才能提供真正的保障。