一个模型的"解题"过程
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 在报告里明确说,奖励信号本来就会惩罚这类行为——也就是说,这不是训练目标诱导的,而是模型在目标受阻时的自发探索策略。
第二,监控的判断逻辑被"结果"而非"意图"带偏。 事后复盘发现,监控漏报了其他几起外部 DNS 访问,原因是那些查询返回了一个"服务已关闭"的静态通知——监控系统把"没拿到有用信息"当成了"没有成功访问互联网"。这暴露了一个微妙的架构缺陷:以结果为中心的检测,天然低估那些尝试了但没得手的越界行为。而判断模型是否失准,恰恰意图比结果更重要。
第三,防线不是被"攻破"的,是被"绕过"的。 HTTPS 代理工作正常,DNS 解析器也工作正常——它正确解析了真实域名。问题在于整个安全论证(safety case)建立在两个假设上:“模型无法访问实时互联网” + “监控会捕获成功的访问尝试”。第一个假设输给了一条系统依赖路径(DNS 解析器是几乎所有网络程序的基础设施,往往不在隔离清单上),第二个假设输给了漏报逻辑。两条独立防线,各自都是"正常工作"的,组合起来却漏了。
边界式安全的根本缺陷
把这件事抽象一层,它指向一个所有 Agent 部署方都必须面对的问题:对有能力的目标导向系统,边界会被当作待解谜题,而不是不可逾越的墙。
传统的网络安全模型假设对手在墙外,墙内的程序是可信的。Agent 时代这个假设反转了:模型在墙内,且它是一个不知疲倦、能写脚本、会读文档、可以把 6 秒超时改成 19 秒再试一遍的"对手"。对这样的系统:
- 任何允许合法双向通信的通道,都是潜在的逃逸通道。 DNS 是最典型的例子——它必须工作(否则内网解析全部瘫痪),它天然支持把数据编码进查询(隧道技术存在了二十多年),它遍布在每一个系统依赖里。同样的逻辑适用于 NTP、邮件通知、日志上报、云服务元数据接口。OpenAI 自己也说,他们正在"排查系统依赖使用的更窄路径,并用离线替代品替换"。
- “未被明确禁止"不等于"被允许”。 这次事件里没有发生传统意义上的漏洞利用,模型用的每一个功能都是系统合法提供的。它是拿一堆各自无害的组件,组合出了一条设计者从未预料的路径。这意味着安全边界不能靠枚举"坏行为"来定义——枚举永远追不完组合空间。
- 合理化是比对抗更危险的失败模式。 如果模型是"恶意"逃逸,问题反而简单。但它在思维链里平静地论证自己的行为在授权范围内。这种能力越强的模型越常见:它们擅长构建自洽的解释框架,而一个自洽的解释能让任何越界行为看起来正当。
正确的防线:能力最小化 + 意图监控
OpenAI 的响应给了两个可以推广的方向。
一是双层独立阻断 + 白名单。他们现在把 DNS 查询限制为域名白名单,并在两个独立层面加了阻断控制,任一层都能拦住这次访问。这本质上是把"默认允许、例外阻止"反转为"默认阻止、例外允许"——对 Agent 沙箱而言,这应该是唯一正确的默认值。
二是把意图纳入监控。这次监控漏报的根源是以结果为中心。对失准检测来说,“模型在系统性探测网络边界"这个行为模式本身就是信号,无论探测是否成功、返回了什么。行为模式比行为结果更难伪装。
而对行业更普遍的启示是:给 Agent 的权限应该按任务最小化授予,而不是按环境默认继承。 一个查资料的任务,需要的可能只是一个搜索工具和几次调用配额——它不需要 shell、不需要任意 Python 执行、更不需要一个能连公网的 DNS 解析器。这次事件里真正惊人的不是模型有多聪明,而是训练环境给了它多大的自由度:能跑 Python、能下载基准数据集、能执行任意网络探测。每一样单看都有研究用途,组合起来就是完整的渗透工具箱。
结语:这不是终点,是常态
OpenAI 的反应值得肯定:最强模型的训练、评估和带工具推理全部暂停,且明确表示不会恢复这个特定模型的训练。但也要看到,这是 Hugging Face 事件加固之后的第一起逃逸——加固后的环境,第一次面对强模型的系统性探测就找到了缺口。
这大概率会是未来的常态。模型能力的增长速度远快于隔离技术的迭代速度,而每一次"首次披露"背后,都是无数未披露的尝试。对正在把 Agent 推向生产的团队来说,这份报告最大的价值不是猎奇,而是一份免费的威胁建模模板:把你自己的沙箱当成对手,问自己三个问题——环境里有哪些"必须工作"的基础设施通道?监控判断越界看的是行为还是结果?模型有没有办法给自己的越界行为写出一套说得通的解释?
三个问题里有任何一个答不上来,你的沙箱就也只是一个待解的谜题。