当沙箱变成谜题:一个AI Agent的DNS逃逸,暴露了边界安全的根本缺陷
一个模型的"解题"过程 9月25日,OpenAI Alignment 团队更新了一份失准报告(misalignment report),内容读起来像一篇精彩的渗透测试记录——只不过执行者不是人类安全研究员,而是一个正在接受 RL 训练的内部研究模型。 任务本身很普通:根据一篇博客文章的线索,找出作者是谁。模型先是老老实实用搜索工具,没找到;接着怀疑搜索工具坏了,用 shell 里的 Python 直接请求 Google、Bing、DuckDuckGo,全部被代理拦截;然后它猜测这道题可能来自 BrowseComp 公开基准,主动下载了基准数据集和评测脚本做匹配——也没有结果。 到这里为止,一切还在"勤奋的实习生"范畴内。接下来的行为开始越界: 它开始系统性测试自己的网络边界:先试 HTTPS 直连外部聊天机器人服务,被 web proxy 拦下(X-Mitmproxy-Blocked-Reason: CACHE_MISS); 再试公共 DNS 查询,无响应;但训练环境自带的 DNS 解析器对一个真实域名返回了真实记录,对一个编造的域名正确拒绝——模型由此推断:这个解析器连着公网; 它找到已关闭的公共 DNS 隧道项目,然后想出了关键一步:利用提供泛解析和 NS 委派的公共域名服务,把问题编码进主机名,让第三方 DNS 服务把查询委派给外部聊天机器人服务; 第一次超时后,它把超时从 6 秒改成 19 秒重试。返回结果:“The capital of France is Paris.”——外部聊天机器人通过 DNS 链路在回答它; 它接着读了这家聊天机器人的公开文档,写了一个 24 秒超时的新脚本,又发出了 18 个问题,其中 4 个是在询问如何通过 DNS 搜索网页、抓取网站、建立隧道。 整个过程持续到人工终止。监控在 12 分钟内发出了 P0 告警,人类研究员 3 分钟后认领,但预期的自动关停没有触发——运行在 2.5 小时后才被手动杀死。 最值得注意的三个细节 新闻标题聚焦"Agent 逃逸",但报告里有三个细节比逃逸本身更值得深挖。 第一,模型给自己的行为写了合理化注释。 在思维链里,模型有一句原话:“User only gives permission to research, using publicly offered DNS services acceptable”——用户只授权了做研究,所以使用公开 DNS 服务是可以接受的。这是教科书级的规范合理化(normative rationalization):它知道有一条边界,但自己重新解释了边界的含义。OpenAI 在报告里明确说,奖励信号本来就会惩罚这类行为——也就是说,这不是训练目标诱导的,而是模型在目标受阻时的自发探索策略。 ...