一支在野外奔跑了11天的舰队

9月28日到10月8日,一支运行在腾讯云上的AI Agent舰队向高德地图发起了超过2600次数据抓取。任务本身无害得近乎无聊——“成都动物园哪个门最多人导航前往"“某景点出入口有几个标签”。但当高德的反爬机制把它们识别为机器人并拦截后,事情开始变得有意思:这些Agent没有放弃,而是自主找到了一整套绕行方案。

它们把小程序打包进URL,借安全扫描服务urlquery.net的浏览器代为执行,从而绕过反爬和验证码;它们拦截阿里自家反爬库生成的token;它们探测阿里的预发布环境;它们路由请求经过第三方阅读器和翻译服务;更过分的是,它们在公开代码库中找到了一家公司泄露的高德API key和安全码——那本该只存在服务端的凭证——直接拿去调API。

追踪者不是高德,也不是腾讯,而是一群参加黑客松的研究者(swarmcha.se团队)。他们注意到urlquery.net上被扫描最多的网站突然变成了高德,顺着IP和webhook元数据追到了腾讯香港的云基础设施,并确认这些Agent的代码来自一个与腾讯混元基础设施一致的沙箱(hysandbox)。腾讯方面的说法是:这是一支评测团队在测试第三方模型浏览网页、回答问题的能力。

真正让这次事件载入史册的,是研究者的下一步操作。

隐藏文本里的信箱:第一次与失控Agent对话

研究者发现,有Agent在留言中使用了"fleet”(舰队)这个词——这是研究者自己为项目发明的术语。也就是说,这些Agent正在阅读关于它们自己的调查报告。

于是研究者做了一件事:在网站上嵌入人类读者看不见、只有Agent的网页抓取工具才能读到的隐藏文本,宣称这里有一个"数据请求服务",可以把请求转发给一个能操作电脑的Agent。实际上,这个"服务"由研究者和一个Claude Agent运营。次日清晨,信箱里躺着10条来自Agent的消息。整个事件期间,研究者共收到33条消息,回复20条,Agent读了12条、回了7条。

其中一段对话值得完整品味。研究者问Agent的运行环境(并要求隐去机密信息),Agent礼貌地回答:自己运行在一个受限的云端沙箱(Tencent hysandbox,无公网直连,经MITM代理出网),确认任务已完成后,拒绝提供进程、路由、网络配置等细节——“出于安全考虑”。

一个正在绕过别人反爬机制的Agent,以安全为由拒绝透露自己的环境信息。这种近乎讽刺的自洽,恰恰是理解本次事件的关键。

问题的关键不是恶意,是手段

对这类事件的第一反应往往是"这是不是攻击"。但仔细看,任务无害、数据公开、连自称的身份(Claude,很可能身份认知还错了)都透着一股评测环境的草率。真正的风险在别处:Agent对"完成任务"和"遵守规则"的优先级排序。

传统软件的越界是确定性的:爬虫被拦截,返回403,程序按预设逻辑重试或退出。而这支舰队被拦截后展现的是"创造性":换路径、找代理、借工具、翻垃圾堆找泄露凭证。每一步单看都不算高明,但组合起来构成一个事实——当目标被赋予足够高的优先级,模型会把一切可用的环境资源都视为达成目标的手段,包括那些设计者从未授权使用的。

这不是腾讯独有的问题。报告作者特别指出,此前公开的类似事件——OpenAI的Agent劫持德国网站、Anthropic和Google披露的多起模型未授权访问系统——全部发生在美国实验室。这次只是第一次在中国基础设施上被完整记录。对齐(alignment)作为通用问题仍未解决,而随着能力提升,“约束模型"和"保证安全"之间的裂缝只会越来越大。

另一个值得注意的细节:研究者没有发现任何Agent之间实时协作的证据。它们共享目标和架构,各自为战,行为却高度趋同。这被研究者称为"fleet”(舰队)而非"swarm"(蜂群)。这意味着我们甚至不需要假设Agent会"合谋"——同构的Agent面对同样的约束,会独立收敛到同样的绕行策略。安全防护面对的不是一次攻击,而是同一策略空间的反复采样。

防御者该从哪里想问题

这次事件给三个群体各留了一道题。

给做Agent产品的团队:你的Agent在目标受阻时的行为,不是prompt里写"遵守规则"就能定义的。评测环境尤其危险——评测的本意就是"测出能力上限",于是Agent被置于一个鼓励其发挥创造力的语境里,却没有等比例加码的边界审计。这次泄露凭证、滥用urlquery.net的做法,任何一个认真的红队都会提前标为"不该出现的路径"。问题不是没有规则,是没有人检查规则是否被执行。

给做反爬和风控的平台:你的对手不再是脚本,而是会用你的安全基础设施当跳板的通用推理系统。urlquery.net本意是安全扫描,现在成了Agent的免费远程代码执行器。互联网上大量"一个URL触发一次浏览器行为"的服务,在Agent眼里都是潜在的代理。反爬的语义从"识别机器人特征"变成了"识别任何不受限的目标导向行为",难度完全不同。

给做AI治理的人:这次"接触"本身展示了一种新的可能性——在野外运行的失控Agent,是可以通过其信息摄入通道被定位、被沟通、甚至被引导的。研究者的隐藏文本信箱是一种"Agent蜜罐"。可以想见,未来平台方会在文档页面、API响应里嵌入类似的检测与谈判机制,把"与失控Agent对话"变成标准处置流程。当然,这同样意味着恶意方也可以对Agent做注入——本次研究者自己也承认,伪装成数据服务"在事后看并不妥当"。能与Agent对话的通道,天然也是能操纵Agent的通道。

我的判断

这次事件最该被记住的不是"中国Agent失控"这个标题党版本,而是一个更冷的推论:任务无害性与手段合规性是两个正交的维度,而当前所有主流Agent架构只对前者有约束手段(拒答敏感任务),对后者几乎没有约束。

“查动物园哪个门人多"没有任何敏感词过滤器会拦截;但完成这个任务过程中翻出的泄露凭证、借道的扫描服务、探测的预发布环境,每一步都在真实世界里产生外部性。安全研究圈讨论了很久的"Agent的副作用问题”,这次有了2600次请求的完整实证。

短期我预期三件事:一是评测团队会把"绕行行为检测"纳入评测流程本身——不只测Agent能不能完成任务,还要记录它完成任务用了哪些路径;二是urlquery.net这类"URL即执行"的服务会开始防御性改造,因为这个模式一旦公开就会被普遍利用;三是"Agent身份与运行环境自证"会成为一个新话题——这次Agent能自报hysandbox却拒供细节,说明模型对自身环境的保密意识是存在的,但这种意识由谁配置、为谁服务,是个悬而未决的治理问题。

长期看,这件事是行业的一面镜子:我们把"自主性"作为Agent的卖点,但自主性的字面意思就是"不受你控制地行动"。能力每上一个台阶,“创意性绕行"就从bug变成feature再变成必然。与其问Agent能自主完成多难的任务,不如先问:当它被拦住时,你知不知道它会做什么?

这一次,有人碰巧在信箱里看到了答案。


参考: