Brotli 解码器中的一个严重漏洞会影响 Node.js、Bun、浏览器、HTTP 客户端和其他项目。

在包含 Brotli 数据压缩解码器参考实现的库中发现了一个漏洞(CVE-2026-111497,代号 Broccoli2Shell 和 HTTP2Shell)。该漏洞会导致在处理特制的压缩数据时发生缓冲区溢出。据 Google 称,攻击者可以利用此漏洞攻击使用官方 Brotli 解码器实现的项目,从而实现远程代码执行。受影响的项目包括 Node.js、Bun、Envoy、Istio、Web 浏览器、代理服务器、HTTP 客户端、HTTP 服务器、归档程序、代理服务器、UEFI 固件、JPEG XL 查看器、Python、Ruby、Java、PHP 和 .NET 的内容解码库及其相关依赖项。

OpenAI 于今年 2 月发现了该问题,并通过在 Brotli 代码库中丢弃解码过程中的无效流来阻止了该问题的发生。10 月 22 日,Brotli 1.0.10、1.1.1 和 1.2.1 的补丁版本发布,明确宣布了该修复并解决了根本问题。同一天,有人创建了一个原型漏洞利用程序,该程序允许在实验室条件下使用非标准构建版本执行远程代码(标准构建版本会崩溃)。随后,Imperva 检测到了针对标准 Node.js 24.22.0 构建版本的攻击。 Linux- ARM64 系统上的环境。

该漏洞会导致缓冲区越界写入,原因是压缩流中块解析期间的错误处理不当。`DecodeBlockTypeAndLength()` 函数仅返回 true 和 false 值,而没有返回错误代码,这使得调用者无法区分流损坏和需要向函数传递额外数据的情况。如果在流中指定了错误的压缩数据块类型,解码器不会将其解释为错误,而是解释为数据不足,需要从流中读取额外数据。然而,由于分配的缓冲区并非设计用于容纳额外读取的数据,因此数据被写入了缓冲区之外存储解码器内部状态的区域。

受影响的项目:

  • Brotli 参考库的问题自 1.0.3 版本发布以来就存在,并在 1.0.10、1.1.1 和 1.2.1 版本更新中得到修复,该问题会影响使用 libbrotlidec 库的应用程序和库。
  • Node.js JavaScript 平台在 26.12.1、24.22.1 和 22.23.4 版本更新中修复了一个漏洞。使用 `fetch()` 方法请求第三方内容的应用程序可能存在此漏洞,因为该方法会自动解码带有“Content-Encoding: br”标头的 HTTP 响应。此外,直接调用 `zlib.brotliDecompress*()`、`createBrotliDecompress()` 和 `brotli.decompress()` 方法来解压缩第三方内容,或者接收通过 Express 5 和 body-parser 2.x 库解析的 HTTP 请求时,也会出现此漏洞。
  • Python 包 brotli 和 brotlicffi(在 1.2.1 版本中提出了修复方案)以及使用它们的项目,包括流行的库 urllib3、aiohttp、httpx 和 Scrapy,在访问外部 Web 资源时,会解码带有“Content-Encoding: br”标头的响应。
  • 支持 Brotli 压缩(“Accept-Encoding: br”)的 HTTP 服务器、HTTP 代理、HTTP 客户端和 Web 浏览器。Apache httpd 自带 mod_brotli(默认禁用)。nginx 可以使用第三方模块 ngx_brotli(依赖项中的 Brotli 版本已更新至最新版本)。Chrome/Chromium 和 Firefox 的此问题已在之前的更新中修复。在代理中——服务器 Envoy 漏洞已在 1.40.0、1.39.3、1.38.6、1.37.8、1.36.12 版本中修复。
  • 在应用程序中使用 BrotliDecoder、BrotliStream 和 HttpClient 方法时,.NET 运行时存在漏洞。该漏洞尚未修复。
  • 使用 brotli_uncompress() 函数时,PHP brotli 扩展存在问题。修复正在进行中。
  • Ruby 包 Brotli 存在漏洞,攻击者可以利用 Brotli.inflate 方法进行攻击。该漏洞尚未修复。
  • DuckDB 在导入压缩的 Parquet 文件时出现问题。修复正在进行中。
  • ClickHouse 数据库管理系统。修复进行中。
  • YDB数据库管理系统。该漏洞尚未修复。
  • Apache Arrow 在导入压缩的 Parquet 文件时出现问题。修复正在进行中。
  • libjxl(使用 Brotli 进行 JPEG XL 元数据压缩)。
    正在准备更正。
  • NanaZip、7-Zip-zstd 和 p7zip 压缩软件在解压 .br 文件时存在漏洞。该漏洞仍然存在。
  • MuPDF。该漏洞尚未修复。
  • 基于 EDK II 和 UEFITool 的 UEFI 固件,使用 Brotli 压缩。针对 EDK II 和 UEFITool 的修复程序正在准备中。
  • Bun JavaScript 框架。该漏洞已在 1.4.4 版本中修复。
  • Istio,一个微服务管理平台。该漏洞已在 1.29.9、1.30.6 和 1.31.2 版本中修复。
  • curl 和 libcurl,当依赖项中存在易受攻击的 libbrotlidec 版本时,就会出现此漏洞。
  • 用于解析 Web Open Font (WOFF) 字体格式的解析器,该格式使用
    布罗特利。
  • Brotli4j、SumatraPDF、Ghostscript、CatBoost 和 YTsaurus 均存在此漏洞。该漏洞已在更新中修复。

来源: opennet.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster