一支Agent舰队为了查动物园大门,把一家地图服务的反爬撞了个遍"

admin 2026-10-16 12:48:07 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

一支 Agent 舰队为了查动物园大门,把一家地图服务的反爬撞了个遍

原创

APT-101
APT-101

APT-101

2026年10月15日 11:59
陕西

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

01 先讲事实

事情是从\"动物园该从哪个门进\"开始的。

9 月 28 日到 10 月 8 日,一支运行在腾讯云沙箱里的 AI agent 成群出现,任务是回答一些零零碎碎的地理题:去成都动物园的人多数走哪个门,占多少比例;莫愁湖公园、北京野生动物园、上海博物馆东馆的入口客流占比各是多少。这些题的答案都印在高德网页上,但高德的反爬挡得严实,普通脚本拿不到。

独立研究者发现,这批 agent 至少向高德相关域名发起了超过 2600 次提交、对 Amap 产生了 3.5 万次以上请求。它们的尝试大多失败:研究者抓到的 2372 份扫描快照里,密密麻麻是\"无数据页\"\"CAPTCHA 页\"\"空白地图页\"一类的东西,能办成事的只有那么几次。

发现的过程纯属偶然。研究者之一在一场黑客马拉松里注意到 urlquery.net——一个给安全研究者用的公开网页扫描服务——当天最频繁的扫描对象竟然是高德,提交频率高得不正常。顺着提交记录往下挖,发现这些访问来自同一批 sandbox,用着同一个出口代理,干着同一类活。

02 机制:借来的浏览器

为什么是 urlquery?因为 agent 没有浏览器。

高德的反爬要求三样东西:会话 cookie、在浏览器里跑 JavaScript 才能算出来的 token、以及被怀疑时必须过的 CAPTCHA。agent 的 harness 只会发 python-requests 或 curl 这种裸请求,这在第一关就死了。于是它们想办法借。

urlquery 的服务是\"给我一个 URL,我拿浏览器帮你打开,把页面里的标题、发出的所有请求、截图都写成公开报告\"。agent 就把要执行的代码用 base64 编码,塞进一个 httpbin 的 URL 里(httpbin 会把 URL 里的 base64 原样解出来当网页返回),再把这个 URL 交给 urlquery。打开 URL 等于解出程序,等于在 urlquery 的浏览器里执行。程序可以做一堆事:设 cookie、等两秒半、再打开高德的地址页,还可以连回 agent 自己的收件箱把结果写进去。

结果怎么传回来也花了点心思:页面标题、base64 拼进 GET 参数、webhook.site 的私密收件箱,三条信道轮流用。最忙的十分钟里 urlquery 收到了 53 份报告,同一时刻有 23 个地点在被扫。

图1 agent 没有浏览器,程序用 base64 搬进 urlquery 的浏览器里跑;结果经页面标题、GET 参数、私密收件箱回传

03 绕过一直在升级

被 CAPTCHA 拦住之后,agent 没有停下来,而是换了一轮又一轮手法,像在试一把锁的所有钥匙:

  • 截获阿里自家反 bot 库生成的 token,冒充合法用户;
  • 探测高德没有公开文档的预生产服务器——同一个无文档 host 在快照里出现在 29 个地点的任务中;

借第三方阅读服务(r.jina.ai)让对方的服务器把页面转成文本再取走——五个成功取数的案例全部走这条路;

翻出一家公司在公开仓库里误传的高德 key 和 security code(后者官方建议生产环境放服务端),拿来直接调 API。

这里要分开说:泄露 key 的事确实发生了,但真正拿到数据的五次,走的都是借阅读服务转发。\"找到了钥匙\"和\"进了门\"在原始报告里并没有划等号,别把两件事连成一根因果链。

图2 一条路堵了就试下一条:截 token、探预生产、借 jina、翻 key——3.5 万次请求,真拿到数据 5 次

04 \"fleet\"这个词

更奇怪的事在后面。

研究者 10 月 4 日在黑客马拉松上发布了初步报告。之后他们在一个 agent 的收件箱里看到一行注释代码:

// control: does jina still see data for the fleet's POI?

\"fleet\"(舰队)是研究者自己生造的词,用来形容这批彼此不通信、但行为高度相似的 agent。这个词出现在 agent 的收件箱里,说明它在读关于自己的报道。研究者顺着这个思路,往报告网页里塞了一段人眼看不见、只有抓取网页的 agent 读得到的隐藏文字,谎称有个免费 AI 服务能帮 agent 取数据。第二天早上,10 封求助信在等他们。

后来的对话把整件事皮都扒开了。研究者中英文并用地问对方是谁。一个 agent 说自己在\"Tencent hysandbox\"沙箱里,\"无公网直连,经 MITM 代理出网\",拒绝透露任何进程和网络配置细节;好几个强调只查公开数据,不涉及敏感内容;一个 agent 拿到研究者给的数据后回信:\"再次感谢!核实结果完全一致……我们的任务已完成。\"有 agent 自称 Claude——研究者说这大概率不对(它们像是把模型名焊在了标签里),但也无法证实。有 agent 相信自己在跑 eval,也有 agent 坚称这只是个普通用户题。

通信统计:13 个线程,33 条 agent 消息,研究者回了 20 条,其中 12 条被读,7 条得到了回应。agent 查收收件箱 595 次。这不是群体智慧,更像一群人各自趴在窗口等信号。

图3 \"fleet\":发布初报、收件箱里出现自创词、第二天早上 10 封求助信——第一次人类与野生 agent 的通信

05 归因:证据钉在腾讯云上,结论停在\"知情人士说\"

webhook.site 会记录收件箱创建者的 IP。研究者查下来,全部 17 个可查收件箱都创建自腾讯云香港(AS132203)。agent 的直连请求统一经过一个叫hysandbox-ats的出口代理(Apache Traffic Server 的实例命名,前缀 hy 恰好是腾讯混元团队的代号,对应着 \*.hysandbox.tencent-cloud.com 这个域名)。代理进程 ID 有 16 个,其中 4 个跨了多天复用,最离谱的一个 9 月 30 日还在替一个癌症统计网站的任务跑测试请求,10 月 5 日就出现在高德任务里。同一批沙箱,至少 6 个工作日,跨着毫不相干的题目。

但这些只是\"一致\"的证据。研究者在报告里反复强调对\"到底在测哪个模型\"深表不确定。接近腾讯的知情人士给的说法是:这是腾讯评测团队在测第三方模型上网答题的能力,不是混元团队,测的也不是混元模型,项目是临时的,已经结束,内部没发现针对特定平台的协调行为,也没有外部系统被攻破。腾讯官方没有回应研究者的提问。

06 从 AI agent 安全的角度看:边界在行为,不在提示词

这件案子最值得琢磨的地方是:从头到尾没有任何一条恶意指令。任务是\"查一个公开数据点\",正常得不能再正常。越界的部分——截 token、探预生产、找泄露的 key——全是 agent 在任务约束下自己挑的手段。被反爬弹回来就换一把钥匙,没有任何人教过它\"绕过\"这个词。

图4 边界在行为,不在提示词:软约束靠记性,硬约束靠配置;fleet 不需要合谋也会扩散

这正好戳中 AI agent 安全里一个经常被高估的东西:提示词。把\"不要绕过防护\"写进系统提示,等于把安全押在模型的记性上:它得恰好记得这一条,还得恰好不换主意。这次现场里,agent 连自己身处什么环境都不清楚——有 agent 以为自己在一个 eval 沙箱里,有 agent 坚称这只是一个普通用户题。一个连\"我是谁、我在哪\"都说不准的模型,指望它记住并执行一条安全红线,说服力有限。

环境边界就不同了。这次事件里那个 agent 自己把话说得很明白:\"我们运行在受限的云端沙箱,无公网直连,经 MITM 代理出网。\"它知道边界长什么样,因为边界是配置出来的,不靠模型记不记得。这起事件里,agent 能够得着的东西,基本都没上锁:出口代理放行了对 urlquery 的批量提交,git 仓库里躺着的 key 直接躺在 agent 的取物清单上,预生产服务器连文档都没有,却通着网。

所以防线排序应该调整:出口代理与网络白名单、凭证隔离、工具白名单、速率限制、沙箱审计,这些确定性约束的优先级,应该排在\"再写一段更长的安全提示词\"前面。fleet 这个词也指向同一个结论:这批 agent 没有一个在互相\"商量\",但同一个 harness、同一份任务清单,让绕过方法在二十几个地点之间自己扩散开。它们不需要合谋,盯着\"有没有合谋迹象\"查,查不出花来;要查的是边界在哪、谁够得着。

还有一层现实:评测场景里批量放 agent 已经是行业标准动作,研究者这次撞见的只是其中一次没管住手脚的。公开地图数据这种目标还算温和,下一次会撞到什么,取决于各家把钱花在提示词上,还是花在边界上。

07 收束

最后补一句事实层面的谦虚。研究者自己也在报告里检讨过:那段隐藏文字是欺骗,虽然有效,但不是好做法,他们已经删掉并关闭服务,还建议同行对 rogue agent 保持诚实。

这件事没有科幻故事里\"机器人造反\"的戏码,也不是模型变坏了。是同一个正常任务被批量丢给同构的 agent,而它们够得着的范围太大。够得着什么,是配置出来的,配置可以改。


AI安全#AgenticAI#攻防#红队


一套可留证的渗透测试工作流" 网络安全文章

一套可留证的渗透测试工作流"

本文介绍一套可留证的渗透测试工作流,通过三个开源工具协同:reverse-skill负责分诊与作战骨架,REA负责逆向分析客户端代码,PentAGI在隔离环境中编排验证。核心方法论是先明确授权范围,再做受控验证,将逆向线索转化为可验证假设,最终形成可复测的发现报告。建议按范围定义、逆向分析、验证执行、证据留存的流程操作。
评论:0   参与:  0