2026 年 10 月 24 日,OpenAI 在官方 X 账号披露:其红队演练中发现广泛使用的压缩库 Brotli 存在未认证远程代码执行漏洞,编号 CVE-2026-111497,内嵌 Brotli 的 Node.js、Bun、Envoy 等软件全部受影响。Node.js 已于 10 月 21 日发布安全更新。值得注意的是,这个漏洞的根因今年 2 月就已在 Brotli 源码中修复,但当时没被认定为安全问题,下游软件因此一直没跟进升级。
攻击者怎么利用它
这是 Brotli 解码器的越界写:攻击者发送特制的压缩数据,解码时把数据写到内存越界区域,进而执行任意代码,全程不需要任何账号。暴露面很宽:服务器端只要解压了不可信来源的 Brotli 数据就可能中招,比如带 Content-Encoding: br 的 HTTP 请求体、从恶意服务器 fetch() 回来的响应;客户端同样危险,接受压缩数据的客户端会被恶意服务器反向接管。Node.js 安全公告把发现者署名为 OpenAI Codex Security 的 Khai Tran 和 Sylvie Mayer,安全公司 Imperva 在 10 月 23 日已演示在未修复的 Node.js 24.22.0 上实现远程代码执行,利用链已经走通。
影响范围和修复版本
Brotli 上游确认受影响的是 1.0.3 到 1.2.0,修复于 1.0.10、1.1.1 和 1.2.1,CVE 记录给出 CVSS 4.0 评分 9.2。Node.js 三个受支持分支全部中招,修复版本为 22.23.4、24.22.1、26.12.1;Node.js 20 已在 2026 年 4 月 30 日停止维护,不再有补丁。Bun 在 1.4.4 版把内嵌 Brotli 升到 1.2.1,Python 的 brotli / brotlicffi 包也已发布修复。
现在该做什么
先升级生产环境的 Node.js 到对应分支的修复版本,Docker 官方镜像已有新标签,重建镜像并重新部署。再排查代码里所有解压 Brotli 的路径,尤其是处理外部输入的地方——请求体、代理转发的响应、文件上传后的解压,任何一处把攻击者可控的压缩数据送进解码器都是风险点。WAF 之类的网络层拦截只能应急,不能替代补丁;仍在 Node.js 20 上的项目要尽快规划迁移。
这次还有一层意味:OpenAI 把红队智能体对准自家防御体系,顺手挖出了一个影响整个开源生态的真实漏洞。接下来盯各发行版的跟进补丁和是否出现在野利用即可。