漏洞概述 | |||
漏洞名称 | Node.js Brotli 解码器远程代码执行漏洞 | ||
漏洞编号 | QVD-2026-90335,CVE-2026-111497 | ||
公开时间 | 2026-10-22 | 影响量级 | 百万级 |
奇安信评级 | 高危 | CVSS 3.1分数 | 8.1 |
威胁类型 | 代码执行 | 利用可能性 | 高 |
POC状态 | 已公开 | 在野利用状态 | 未发现 |
EXP状态 | 已公开 | 技术细节状态 | 已公开 |
危害描述:攻击者可利用恶意 Brotli 数据破坏解码器相邻内存,可能导致:进程崩溃或拒绝服务;敏感内存内容泄露;在特定堆布局和利用条件下执行任意代码;以 Node.js 进程权限(容器场景下可能为 root)访问文件、环境变量、密钥和网络资源。 | |||
01
漏洞详情
>>>>
影响组件
Node.js 是一个基于 Chrome V8 引擎的开源、跨平台 JavaScript 运行时,采用事件驱动、非阻塞 I/O 模型,适合构建高并发的 Web 服务、API 网关、微服务、Serverless 函数和命令行工具。它拥有庞大的 npm 包生态,支持通过中间件和插件快速扩展功能,广泛应用于企业 AI 助手、聊天机器人、内容服务和后端业务系统。Node.js 内置 Google Brotli 解码器(deps/brotli),并通过 zlib、fetch()/undici 及 Express 5/body-parser 2 等路径处理压缩数据。
>>>>
漏洞描述
近日,奇安信CERT监测到官方修复Node.js Brotli 解码器远程代码执行漏洞(CVE-2026-111497),该漏洞位于 Google Brotli 解码器(c/dec/decode.c),并影响 Node.js 内置的 Brotli 解码器(deps/brotli)。恶意 Brotli 流可耗尽 block_length[2] 并触发非法块切换,旧版 BROTLI_SAFE 将其误判为“输入不足”,重试循环继续向 BrotliDecoderState.buffer.u8[] 追加数据,越界覆盖 buffer_length、pos、max_distance 等字段,造成内存破坏、敏感内存泄露和拒绝服务;特定布局下还可覆盖回调指针,导致远程代码执行。目前该漏洞PoC和技术细节已公开。鉴于该漏洞影响范围较大,建议客户尽快做好自查及防护。
>>>>
利用条件
受内存布局(ASLR、堆状态、是否使用 Worker 等)影响,利用条件也是较为苛刻,很多公开 PoC 在标准环境下只能做到崩溃(DoS)或有限信息泄露。
02
影响范围
>>>>
影响版本
1.1.0 <= Google Brotli < 1.1.1
1.2.0 <= Google Brotli < 1.2.1
Node.js 22.x < 22.23.4
Node.js 24.x < 24.22.1
Node.js 26.x < 26.12.1
1.0.3 <= PyPI brotli < 1.2.1
1.0.3 <= PyPI brotlicffi< 1.2.1.0
Node.js 20.x、21.x、23.x、25.x 已停止维护,同样受该缺陷影响但不再提供修复。
>>>>
其他受影响组件
用 Node.js 内置 deps/brotli 的官方二进制、容器镜像、SEA(Single Executable Application)和启动快照;
动态链接系统 libbrotlidec 的发行版 Node.js 包;
其他内置或动态链接受影响 Brotli 版本的运行时与应用(如 Bun ≤ 1.4.3,公开信息显示 1.4.4 修复)。
03
复现情况
目前,奇安信CERT已成功复现Node.js Brotli 解码器远程代码执行漏洞(CVE-2026-111497),截图如下:

04
处置建议
>>>>
安全更新
官方已发布安全补丁,请及时更新至最新版本:
Node.js 22.x >= 22.23.4
Node.js 24.x >= 24.22.1
Node.js 26.x >= 26.12.1
Google Brotli >= 1.0.10
Google Brotli >= 1.1.1
Google Brotli >= 1.2.1
下载地址:
https://nodejs.org/en/download
https://github.com/google/brotli/releases
https://pypi.org/project/brotli/
https://pypi.org/project/brotlicffi/
缓解措施:
1. 在边缘或应用层拒绝不需要的 Content-Encoding: br 请求体;
2. 对不可信外部请求使用 Accept-Encoding: identity,并关闭客户端自动解压;
3. 使用 WAF/网关规则拦截异常大的 br 请求体、异常 Brotli 流和已知攻击特征;
4. 限制请求体大小、解压输出大小、处理超时和进程内存;
5. 监控进程异常退出、SIGSEGV/SIGABRT、解码器错误和连接重置。
05
参考资料
[1]https://nodejs.org/en/blog/vulnerability/october-2026-security-releases
[2]https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/
声明:本文来自奇安信 CERT,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。