漏洞概述

漏洞名称

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。