Brotli 解码器的一个内存处理缺陷,可以让攻击者在无需身份验证的情况下远程执行代码。2026 年 10 月 23 日,OpenAI 披露:这个漏洞是其 Codex Security 安全团队在一次红队演练中挖出来的;早在 10 月 21 日,Node.js 官方已发布安全更新,修复版本为 26.12.1、24.22.1、22.23.4,覆盖 26.x、24.x、22.x 三个发行线。
漏洞长在哪:一次"块切换"误判
Node.js 官方安全公告把成因写得很具体。解码器在处理畸形压缩输入时,把非法的"块切换"误判成"临时还需要更多输入",于是继续往一个只有 8 字节的内部缓冲里追加字节,一路写穿缓冲边界。
能向应用投喂 Brotli 数据的攻击者就此获得破坏进程内存的能力:轻则崩溃,重则内存泄露,最坏可远程执行代码。攻击路径是双向的——接受压缩输入的服务端可能被接管;开了压缩选项的客户端工具(如 curl),碰上恶意服务端同样中招。
从 Node.js 到 Envoy:影响面比看上去大
Brotli 是 Google 开发的压缩算法,早就成了网络基础设施里的"空气":Node.js、Bun、Envoy 都内嵌了这份解码代码。应用可能一行压缩代码都没写,依赖树里却躺着一份脆弱的解码器——这类"隐形依赖"正是供应链漏洞最难缠的地方。
一个裸奔了八个月的漏洞
最值得玩味的是它的"身世":问题根源早在 2026 年 2 月就已修进 Brotli 上游源码,但当时没人意识到这是安全问题,没有 CVE 编号,也没推动下游更新。整整八个月,一个真实可利用的高危漏洞躺在开源供应链里"裸奔"——不是没人能修,而是没人认出它值得修。直到 OpenAI 的智能体红队把它翻出来,Brotli 才补上 CVE-2026-111497 并发布新版本。Node.js 官方把这一批修复的最高严重等级定为高危。
该做什么:先升级,再盘一遍依赖
用 Node.js 的团队,升到各自发行线的修复版本(26.12.1 / 24.22.1 / 22.23.4);用 Bun、Envoy 的,等下游安全更新全部落实。建议把依赖树里带 Brotli 解码的组件盘一遍——补丁要打全,不然只是把门关了一半。
这件事也给"AI 挖洞"添了新注脚:不到一个月前,AI 刚帮着挖出藏在 PHP 核心里十多年的远程执行入口(相关报道);OpenAI 则在红队演练后把前沿模型训练环境整体断网隔离。AI 正在从"辅助扫描器"变成真能翻出零日的主力,Patch the Planet 这类给开源软件找漏洞的项目,接下来会越来越忙。