Node.jsBrotli解码器越界写入漏洞(Node2ShellCVE-2026-111497)通告"

admin 2026-11-01 02:28:59 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

Node.js Brotli 解码器越界写入漏洞(Node2Shell CVE-2026-111497) 通告

新华三主动安全

2026年10月28日 16:33
北京

去阅读

漏洞综述

01

漏洞背景

Brotli 是 Google 开发的开源无损压缩算法与数据格式,广泛用于 HTTP 内容压缩,并被 Node.js、Python、Bun、Envoy、Istio 等运行时或软件集成。

近日,新华三盾山实验室监测到 Google Brotli 解码器存在越界写入漏洞(CVE-2026-111497,亦称 Node2Shell)。Google 与 Node.js 等项目已发布修复。该漏洞影响使用未修复 Brotli 解码器处理不可信数据的应用,风险可能涉及 HTTP 请求体、HTTP 响应及其他压缩数据输入。

漏洞详情

漏洞位于 Brotli 解码器 c/dec/decode.c 的 DecodeBlockTypeAndLength() 相关逻辑。未修复实现未正确检查非法块类型切换的返回状态(CWE-252),将应终止解码的格式错误视为暂时需要更多输入,导致流式解码器继续向内部 8 字节缓冲区追加数据,触发越界写入(CWE-787)并破坏相邻解码器状态内存。

利用前提是应用将攻击者可控的 Brotli 数据送入受影响的解码路径。远程未认证攻击者成功利用后,可能造成进程崩溃、敏感内存数据泄露,或以受影响进程权限执行任意代码。风险既可能来自启用 Brotli 请求体解码的服务端,也可能来自接收并解码恶意压缩响应的客户端;实际可利用性取决于应用解码路径、运行环境与防护机制。

Imperva 已在官方 Node.js 24.22.0 Docker 镜像(Linux arm64)的特定应用配置中演示远程代码执行,并确认修复版 24.22.1 拒绝相同输入。

影响范围

02

下表列出已确认的影响范围和对应修复版本,也可选择相应分支更新的修复版本。厂商回补补丁的软件包,应结合对应安全公告及实际构建号判断。

组件/分支 受影响版本或条件 修复版本及说明
Google Brotli 1.0.3 ≤ 版本 < 1.0.10    1.1.0 ≤ 版本 < 1.1.1    1.2.0 ≤ 版本 < 1.2.1 对应分支升级至 1.0.10、1.1.1、1.2.1   或更新修复版
Node.js 22.x:低于 22.23.4    24.x:低于 24.22.1    26.x:低于 26.12.1 22.x → 22.23.4    24.x → 24.22.1    26.x → 26.12.1
Node.js EOL 分支 已结束支持且捆绑受影响 Brotli 的版本,如 25.x、20.x 等 官方不再提供常规安全更新,迁移至受支持的已修复版本。
Bun 1.0.21 ≤ 版本 < 1.4.4 1.4.4;旧版编译的独立可执行文件需重新构建。
Python brotli 包含受影响 Brotli、且低于 1.2.1 的构建 1.2.1 或更新修复版。
Python brotlicffi 包含受影响 libbrotli、且低于 1.2.1.0 的构建 1.2.1.0 或更新修复版。
Envoy 公告明确列出:1.39.2、1.38.5、1.37.7、1.36.11;需配置   Brotli 解压器 1.40.0、1.39.3、1.38.6、1.37.8、1.36.12,按分支选择。
Istio 1.31.0~1.31.1    1.30.0~1.30.5    1.29.0~1.29.8 需启用 Brotli 解压 对应升级至 1.31.2、1.30.6、1.29.9;1.29 已结束支持,建议迁移至受支持分支。
.NET 8.x:低于 8.0.33    9.x:低于 9.0.22    10.x:低于 10.0.14    11 预览版:低于    11.0.0-rc.3.26522.148 对应修复版本:    8.0.33    9.0.22    10.0.14    11.0.0-rc.3.26522.148 具体软件包以微软公告为准。
Dynatrace OneAgent 未安装厂商对应安全更新、包含受影响组件的构建 厂商已为 1.345、1.347 等多个分支发布更新;安装所在分支的修复构建。

其他软件:捆绑或链接未修复 Brotli 的 curl/libcurl,以及 Debian、Ubuntu、RHEL、Alpine 等发行版软件包,也应核查实际依赖与补丁状态。仅提供 Brotli 压缩功能不构成本漏洞的解码触发条件。

严重等级

03

威胁等级 高危
影响程度 广泛(涉及集成受影响Brotli 解码器的多个软件生态)
利用价值 高
利用难度 中
漏洞评分 CVSS v4.0 9.2

处置方法

04

官方补丁

建议依据第 2 章对应组件及分支,尽快升级至已修复版本或更新的受支持版本,并安装操作系统、软件包及镜像厂商提供的相关安全更新。使用已结束支持的 Node.js 分支时,应迁移至受支持的已修复版本。

同步更新容器镜像和自带运行时的程序并重新部署。使用旧版 Bun 编译的独立可执行文件,以及 .NET 自包含或 NativeAOT 应用,应使用修复后的运行时或工具链重新构建、发布与部署。升级后重启相关进程,核对实际运行版本及内置组件状态。

官方下载:

  • https://nodejs.org/en/download
  • https://github.com/google/brotli/releases
  • https://pypi.org/project/brotli
  • https://pypi.org/project/brotlicffi
  • https://dotnet.microsoft.com/download/dotnet

缓解措施

  1. 服务端:在任何 Brotli 解码发生前,于反向代理、负载均衡或应用中间件拒绝 Content-Encoding 编码列表包含 br 的入站请求;匹配应不区分大小写,并覆盖多重编码场景。需核查过滤点与实际解码操作的先后顺序。
  2. 客户端:在现有 HTTP 客户端配置中禁用 Brotli 自动响应解码,或在解码前拒绝相应压缩响应。移除 Accept-Encoding 中的 br 可减少协商使用,但不能替代解码侧限制,恶意服务端仍可能返回 Brotli 数据。
  3. 直接解码场景:在完成升级前,避免将不可信数据交给受影响的 Brotli 解码 API;已配置 Brotli 解压器的代理或服务网格,可临时停用该解压功能。临时措施应验证业务兼容性,并尽快通过安全更新完成修复。

参考链接

05

[1]https://github.com/google/brotli/releases

[2]https://nodejs.org/en/blog/vulnerability/october-2026-security-releases

[3]https://pypi.org/project/brotli/

[4]https://pypi.org/project/brotlicffi/

[5]https://github.com/dotnet/runtime/security/advisories/GHSA-p3jp-9v83-76w9

    专家解读|充分发挥信息化在推进中国式现代化中的战略性、全局性、引领性作用" 网络安全文章

    专家解读|充分发挥信息化在推进中国式现代化中的战略性、全局性、引领性作用"

    文章解读国家信息化十五五规划,指出信息化在中国式现代化中具战略性全局性引领性作用,是时代标志、四化协同加速器及民生路径。信息化赋能新质生产力、重塑实体经济、升级国家治理,并构建科技、安全及全球治理新优势,为未来五年信息化发展提供顶层设计。
    评论:0   参与:  0