jsonscraper

Brotli 漏洞影响 .NET 和 Node.js:如何检查并更新应用

CVE-2026-111497 与处理特制 Brotli 数据有关。检查的不应只有运行时版本,还要确认解码器是否实际被使用。

编辑政策 报告错误

即使应用只接收普通 HTTPS 流量,只要它会解压用户提供的 Brotli 数据,也可能处理危险输入。2026 年 10 月 25 日,Microsoft 发布了 .NET 紧急更新,以修复 Brotli 解码器中的缓冲区溢出漏洞;该漏洞编号为 CVE-2026-111497。Node.js 已在 10 月 21 日发布的独立安全版本中修复了同一漏洞。开发者首先应追踪外部数据进入解码器的路径,然后更新运行时,并重新构建或重启应用。

文章:Brotli 漏洞影响 .NET 和 Node.js:如何检查并更新应用
摘要:10 月 25 日,Microsoft 发布了 .NET 紧急修复,以解决 Brotli 解码器漏洞 CVE-2026-111497。Node.js 已在 10 月 21 日的安全版本中修复了同一漏洞。要评估风险,请查明哪些应用会解码不可信数据,以及已部署环境中运行的库版本。
图像用途:封面——核心主题
版块:
视觉主体:Brotli 压缩
© jsonscraper · AI 生成的插图

根据 Microsoft 的说明,.NET 漏洞可能允许未认证攻击者读取或破坏进程内存,从而导致数据泄露、拒绝服务或权限提升。修复已面向 .NET 8、9 和 10,以及 .NET 11 Release Candidate 3 发布。.NET 8 对应的版本为 runtime 8.0.33,以及 SDK 8.0.133 或 8.0.427。.NET Framework 不受此漏洞影响。

风险暴露出现在哪里

当应用将不可信的 Brotli 数据流交给存在漏洞的解码器时,就会产生风险。在 .NET 中,这种情况可能出现在使用 ASP.NET Core 请求解压缩、通过 HttpClient 自动解压响应,或直接调用 System.IO.Compression API(例如 BrotliStream 和 BrotliDecoder)时。.NET 安全公告列出了这些路径,并指出默认情况下,请求解压缩和响应自动解压缩均处于关闭状态。

检查的第一步是盘点软件包。还要查找中间件和 HTTP 客户端配置、直接调用解码器的代码,以及接收压缩数据的第三方组件。确认此类数据是否来自客户端、Webhook、代理或外部 API,并检查解压前是否设置了大小和处理时间限制。这有助于确定哪些位置会让有漏洞的代码接触到外部可控数据。

更新 .NET

请为所用分支安装更新:.NET 8 为 8.0.33,.NET 9 为 9.0.22,.NET 10 为 10.0.14;.NET 11 则使用 Release Candidate 3。对于依赖框架的应用,请安装更新后的 runtime 并重启应用。自包含应用需要重新构建并重新发布:只更新主机上的 runtime,无法替换应用中随包附带的副本。容器也应使用更新后的 .NET 镜像重新构建并部署。

对于 NativeAOT,请在重新发布时同样使用更新后的 SDK 和 runtime 包。如果暂时无法部署修复,可先在已发现的、接收不可信数据的入口路径上临时禁用 Brotli。请测试常规请求和集成:禁用压缩可能会改变对发送压缩请求体的客户端的处理方式。

检查 Node.js 和系统依赖

Node.js 项目于 10 月 21 日披露了该漏洞:Node.js 22.x、24.x 和 26.x 中内置的 Brotli 解码器受到影响。Node.js 安全版本公告列出的修复版本分别为 22.23.4、24.22.1 和 26.12.1。请更新到所使用的受支持分支的修复版本,并重启服务。根据项目说明,当应用使用 node:zlib 解压攻击者提供的数据时,问题就可能出现;内存损坏可能导致进程崩溃、内存泄露或远程代码执行。

还要检查由系统 Node.js 或 .NET 之外的组件单独提供的依赖。核对容器和构建产物中的 Brotli 版本,并在部署后重新检查。在 CI 中固定更新后的基础镜像,并将易受攻击库的版本检查纳入常规构建流程。

行动清单

  1. 列出使用 Brotli 的应用、SDK、runtime、容器和 NativeAOT 构建产物。
  2. 查找外部数据经过自动解码或直接解码的代码路径。
  3. 将 .NET、Node.js 和单独提供的库更新到修复版本;重新构建自包含应用和容器。
  4. 重启进程,并在运行环境中检查版本,而不只是查看项目文件。
  5. 在修复尚未部署期间,限制已发现的易受攻击路径对不可信 Brotli 输入的处理。

处理优先级取决于两个因素:是否存在易受攻击的组件,以及攻击者能否向其传入特制压缩数据流。更新可以修复缺陷,而梳理输入路径则有助于确认修复已覆盖运行中的进程、自包含构建产物和容器。

People

No people listed for this article yet.

Keep readingGitHub CLI 新增可过期 OAuth 令牌:如何启用并检查集成
Read the next article

将阅读内容转化为可用的集成

探索 jsonscraper 社交数据 API、测试请求并构建下一个工作流。

查看 API