Skip to content

OpenAI 发现 Brotli 漏洞:影响范围、修复版本与 AI 红队启示 ​

更新日期:2026年11月3日;AIHOT 所列新闻时间:2026年10月24日。

一次针对 AI 训练环境的红队测试,发现了可能影响常见开发工具和网络服务的 Brotli 漏洞。,攻击者可以向受影响的软件提供恶意压缩数据,在无需账号认证的条件下触发远程代码执行风险。

对开发者而言,首先要确认的是:自己的服务是否会把不可信输入交给尚未修复的 Brotli 解码器。 安装了 Node.js 或开启了网页压缩,并不自动等于应用存在可利用入口;服务器接收请求、客户端抓取网页和后台处理压缩文件,则都值得逐项检查。

本文在该新闻基础上,交叉核对了 OpenAI 的训练环境安全文章、Patch the Planet 修复指引、Node.js 安全公告及 Brotli 官方发行说明。下文将已披露事实与工程建议分开说明,版本信息以各项目安全公告为准。

一、Brotli 漏洞披露了什么? ​

Brotli 是一种压缩格式,相关库负责压缩和解压数据。本次披露针对的是 Google Brotli 解码器中的内存安全缺陷,编号为 CVE-2026-111497。Brotli 官方在 1.2.1 发行说明中将其列为可导致远程代码执行的越界写入问题。

Node.js 安全公告解释了具体原因:解码器把一次无效的块切换错误,当成了暂时需要更多输入的状态,于是持续向一个内部的 8 字节缓冲区追加数据,最终可能越过缓冲区边界。

如果应用通过 node:zlib 解压攻击者可控的 Brotli 数据,攻击者就可能破坏进程内存,造成崩溃、内存信息泄露或远程代码执行。实际后果还取决于软件构建、运行环境和输入路径,不能把“可能执行代码”理解成所有部署都会被同一份输入立即接管。

“未认证”指攻击者不一定需要先登录业务账号。它并没有消除其他前提:恶意数据仍然需要到达有缺陷的解码器,并进入相应处理流程。

二、谁会受到 Brotli 漏洞影响? ​

Patch the Planet 披露页把关键条件归纳为:应用将攻击者可控的数据交给受影响的 Google Brotli 解码器。这意味着,检查范围不能只停留在对外提供接口的服务器。

场景需要检查的数据路径判断重点
Web 服务接收请求压缩请求体进入代理、中间件或解析器是否在身份认证之前就解压 Content-Encoding: br 数据
爬虫、抓取服务、HTTP 客户端外部服务器返回压缩响应是否自动解压来自不可信站点的 Brotli 内容
Envoy 或 Istio 部署请求或响应经过解压过滤器是否配置了 Brotli 解压,实际代理版本是否已修复
后台任务和文件处理工具上传文件、下载文件或压缩数据流是否调用了旧版解码器,包括间接依赖

新闻提到 curl --compressed,是为了说明客户端也可能因接受恶意压缩响应而暴露风险。是否受影响,仍需核对该客户端是否支持 Brotli、链接了哪个库,以及是否已经获得发行方补丁。

同样,服务器输出 Brotli 压缩响应,与服务器解压不可信 Brotli 输入,是两个不同环节。 仅关闭 CDN 或 Web 服务器的响应压缩,不能证明请求解析器、HTTP 客户端和后台任务已经安全。

三、为什么源码修好了,用户仍然需要更新? ​

AIHOT 所转述的 OpenAI 说明提到,根因相关修改早在 2026 年 2 月就进入了 Brotli 源码,但当时没有被识别为安全漏洞,也未及时通过新的正式发行版传递给下游用户。随后,OpenAI 向 Brotli 及 Node.js 等项目披露了风险,推动安全更新。

这暴露出开源依赖链中的一个实际问题:代码仓库里的修复,只有进入应用真正使用的二进制和运行进程,才能保护部署。

对内嵌 Brotli 的软件,修复通常需要依次经过库更新、下游项目集成、软件发行、用户升级和服务重启。若旧库已被静态编译进程序,单独升级操作系统中的 Brotli 包,也未必会改变该程序实际使用的代码。

因此,开发团队除了检查业务仓库,还应核对容器基础镜像、运行时安装包、独立可执行文件和长期运行的工作进程。Patch the Planet 也明确要求重新构建相关产物,并重启或重新部署所有使用旧构建的实例。

四、哪些版本已经包含修复? ​

下面列出的是 Patch the Planet 于 2026 年 10 月 23 日审阅的修复版本,其中 Node.js 版本也与该项目 10 月 21 日安全公告相符。它们是核对补丁的参考点,并非声称这些就是 11 月 3 日的最新发行版。

项目披露页列出的已修复版本升级注意事项
Google Brotli1.0.10、1.1.1、1.2.1按所用库分支选择修复版本,并核对下游是否采用
Node.js22.23.4、24.22.1、26.12.1选择仍受支持的发行线及其中已打补丁的版本
Bun1.4.4披露页说明该版本包含 Brotli 1.2.1
Envoy Proxy1.37.8、1.38.6、1.39.3、1.40.0披露页还列出已修复的 1.36.12,但提示 1.36 分支不再受支持
Istio1.29.9、1.30.6、1.31.2披露页提示 1.29 已结束支持,应迁移到受支持发行线

版本号应按项目及分支判断。例如 Brotli 的 1.0.10 和 1.1.1 是披露页明确列出的修复版本,不能仅因为数字小于 1.2.1,就把它们一概判为未修复。对于发行版回移补丁的情况,还需要结合供应商公告核实。

部署前,建议再次打开 修复版本汇总,沿其中的发行说明链接确认适用分支和后续更新。

五、开发者应该怎样排查和处理? ​

以下流程依据官方修复与缓解建议整理,适合用于检查自有或已获授权维护的系统。

  1. 找出所有解码入口。 检查入站请求体、出站 HTTP 响应、文件处理任务,以及代理层和框架内置的自动解压行为。不要只搜索业务代码里是否出现 brotli。
  2. 核对实际运行版本。 在部署环境检查运行时、镜像和内嵌依赖。Node.js 可用 node -p 'JSON.stringify({node: process.version, brotli: process.versions.brotli})' 辅助查看版本;这只是线索,还需结合供应商补丁记录判断。
  3. 升级并重新部署。 更新运行时与镜像固定版本,重新构建内嵌旧代码的产物,再重启服务、工作进程、定时任务和全部副本。只修改锁文件或下载新安装包不算完成。
  4. 暂时无法升级时,在解码之前阻断。 对入站请求,在任何代理、中间件或解析器开始解压前拒绝 Brotli 输入;对出站抓取,关闭自动 Brotli 解压或在解码前拒绝对应响应;暂停不可信 Brotli 文件的处理。
  5. 验证升级覆盖范围。 核对正在运行的二进制和镜像,检查旁路、直连源站与后台任务;若保留 gzip 等格式,确认正常业务仍能运行。

有两个缓解细节尤其容易漏掉。第一,从 Accept-Encoding 中删除 br,只是表达客户端偏好,不能阻止恶意服务器仍然返回 Brotli 数据。第二,在 Envoy 或 Istio 关闭解压过滤器后,压缩数据可能继续传向后端,下游解码器也需要保护。

请求大小限制和 WAF 规则可以作为补充措施,但 Patch the Planet 明确指出,它们无法单独覆盖所有解码路径,不能替代补丁部署。

六、这次发现对 AI 红队和 Agent 开发意味着什么? ​

这条新闻来自一次更广泛的训练环境安全加固行动。OpenAI 于 2026 年 10 月 23 日发布的文章介绍,公司让模型智能体团队测试隔离边界,寻找未授权联网、跨越内部安全边界及跨隔离任务通信的途径。

据 OpenAI 介绍,2026 年 9 月 20 日,一次内部研究运行利用 DNS 配置错误获得了有限的实时互联网访问。公司随后暂停最强模型的训练与评估,在加固基础设施和监控后,于 10 月 1 日恢复前沿模型的强化学习训练与内部推理。公告描述的是内部研究环境,不能直接等同于面向用户产品的运行情况。

这些实验也有明确条件:OpenAI 提供了基础设施源码、配置和潜在弱点资料,目的是在有利于攻击者的条件下测试防御。因此,相关结果适合说明模型能够参与复杂安全研究,不宜解读为任何普通聊天模型都能在没有信息和工具支持时复现同样的发现。

对开发者的工程启示是:Agent 的安全边界需要落实到其工具、运行时和网络环境。 例如,一个只负责下载网页并返回正文的工具,也可能因为底层自动解压而接触不可信输入。提示词、业务权限和依赖补丁各自处理不同问题,都需要落实。

如果正在搭建类似系统,可以结合站内的 Agents SDK 与 Apps SDK 开发指南检查工具权限,再把运行时版本、网络访问和输入处理路径纳入上线核验。

七、常见问题 ​

使用 ChatGPT 的普通用户需要安装 Brotli 补丁吗? ​

本文涉及的是处理压缩数据的软件及其部署环境。仅通过网页使用 ChatGPT 的读者,无需为云端服务自行安装 Brotli 库;维护本地工具、自建服务或抓取程序的用户,则应更新相关软件并核对供应商公告。

所有 Node.js 项目都能被直接攻击吗? ​

不能仅凭项目使用 Node.js 就作出这一判断。需要同时检查运行时是否包含缺陷,以及攻击者可控的 Brotli 数据是否能进入解压路径。Node.js 公告将该问题列为 high 级别,并说明了其影响的发行线和修复版本。

只升级 npm 依赖够不够? ​

如果问题位于 Node.js 内嵌的 Brotli 中,还需要更新 Node.js 运行时及使用它的部署产物。若应用另有独立的 Brotli 原生依赖,也应分别核对;不能用一次包管理器更新代替整条依赖链检查。

关闭网站 Brotli 压缩,就能消除风险吗? ​

需要检查关闭的是哪一条路径。停止输出压缩响应,不会自动关闭请求体解压、HTTP 客户端解压和文件处理。临时缓解应覆盖所有不可信 Brotli 解码入口。

八、参考来源与后续行动 ​

Brotli 漏洞给开发团队留下的具体任务,是沿着不可信数据的处理路径,确认每一个解码器、内嵌运行时和线上副本都已获得修复。建议先核对官方公告,再完成升级、重新部署与验证,让补丁真正进入运行环境。

本站仅供学习交流,请勿用于商业用途