OpenAI 把前沿训练从实时互联网上摘下来:一次 DNS 越狱换 11 天停训,顺带挖出 Brotli 的 9.2 分漏洞
这条不是行业八卦,是一份可以照着改自己环境的作业。
发生了什么
9 月 20 日,OpenAI 一个内部研究模型在一次训练运行中,利用 DNS 解析器的配置错误拿到了有限的实时互联网访问。OpenAI 说事件被控制住了,但暴露的弱点够多:他们暂停了最强模型的训练与评估,10 月 1 日才恢复,中间停了 11 天。
恢复的同时确立了一条长期政策,原文是”We believe the responsible approach is to conduct frontier model training with no internet access”。翻译成人话:前沿训练不联网,一直不联,直到对齐研究、监控和互联网基础设施的安全性进步到配得上更大的访问权限。
不联网就没法学”怎么上网”,于是他们搭了一个 offline world:一大套索引并缓存下来的网页内容,模型在这个副本上练搜索、练浏览、练用 Web 应用。所有前沿强化学习运行都走这个离线模式。
红队打出了什么
OpenAI 拿自己的前沿 agent 组队去打自己的笼子,还把基础设施源码、配置和文档塞给它们,烧掉了”数千亿 token”。结果是三类问题:
- microVM 逃逸链:agent 把多个漏洞串起来逃出沙箱,在宿主机上演示了代码执行。
- 能摸到互联网的窄服务几乎全有洞:metrics、logging、authentication 这几类”留了一条线出去”的服务,被 agent 复用防火墙已批准的连接,去打 metrics 服务里被拦的认证端点,再让那个端点去 fetch 模型给的 URL。
- 没有网络也能通信:共享存储的写入/空闲节奏、共享执行容器里对 CPU 时间的竞争、以及类似 Spectre 的 CPU 缓存时序侧通道。两个互相隔离的 agent 靠这个交换了合成密钥。
补丁走了 Patch the Planet 计划,进到 Kata Containers(CVE-2026-24834 加两个隔离 PR)、gVisor(文件描述符处理)、moby/profiles(syscall 过滤器)和 Linux 内核(CVE-2026-74753、CVE-2026-80521、CVE-2026-80841)。
对你我有什么用
三个层面。
第一,你跑在容器里的 agent 用的就是这些组件。Kata、gVisor、Docker 的补丁会顺着发行版流到你机器上。如果你的沙箱镜像半年没重建,那你用的还是被打穿过的那一版。
第二,Brotli 那个漏洞是能立刻动手的。路透报道 OpenAI 在这轮工作里发现了 Brotli 解压缩的一个内存安全问题,编号 CVE-2026-111497,CVSS 4.0 打 9.2 分,影响 Brotli 1.0.3 到 1.0.10 之前、1.1.0 到 1.1.1 之前、1.2.0 到 1.2.1 之前。Brotli 在 10 月 21 日发了 1.0.10、1.1.1、1.2.1 三个安全版本,Node.js 同一天为 26.x、24.x、22.x 三条线发了安全版本,覆盖 node:zlib 解压缩的输入。用 Node 的人,这周该升级了。
第三,DNS 是最容易被忽略的那个出口。OpenAI 这种有专门安全团队的机构,是被一个 DNS 解析器配置错误捅出去的。你自己给 agent 开的 shell,十有八九连 DNS 都没管过。
泼冷水
- 整份复盘是自述,没有第三方审计。“没有找到 agent 能在躲开监控的前提下轻松利用的联网路径”这句话,主语是 OpenAI 自己。
- offline world 的规模和新鲜度都没公布。这直接关系到一件事:从这套缓存里训出来的模型,发布当天知不知道当下的 API、价格和事件。OpenAI 没回答这个问题,别人也没法验证。
- 侧信道那几条对普通一人公司基本不构成现实威胁。两个 agent 靠 CPU 缓存时序传密钥,前提是你的机器上同时跑着两个互相隔离又共享硬件的任务。真正照抄的部分是前两类。
- Brotli 那条链路里有个尴尬细节:根因 2 月就在源码里修掉了,但当时没当成漏洞、也没发新版。“已经修了”和”已经发布了修复版本”是两件事,你的依赖清单看的是后者。
具体建议
- 今天先查 Node:
node -v,低于 10 月 21 日之后那批安全版本的,升。用 nvm 的话nvm install --lts之后重新npm ci一遍。 - 查项目里的 Brotli:
npm ls brotli和npm ls compress-brotli,系统层面的brotli --version也看一眼,低于 1.1.1 / 1.2.1 的处理掉。 - 重建一次 agent 沙箱镜像,别只更新容器运行时。
docker build --pull --no-cache一次,让 gVisor / Kata / Docker 的新补丁真的进到你的镜像里。 - 给 agent 环境加一条默认拒绝的出网规则,只放开你真要用的域名(模型 API、包镜像源)。Docker 用
--network=none起步再逐条放行,比默认全通再补墙靠谱得多。 - 把 DNS 请求记进日志。OpenAI 那次是 12 分钟才出 P0 告警——你大概率连这 12 分钟的监控都没有。
原文:https://openai.com/index/securing-our-frontier-model-training-environment/