首页 > 教程资讯 > 教程详情

.NET 发布带外安全更新:修复 Brotli 解压缓冲区溢出漏洞

软件与互联网 老K说软件 2026-10-26
文章分享

微软为 .NET 8、.NET 9 和 .NET 10 发布了带外(OOB)安全更新,同时发布 .NET 11 Release Candidate 3(RC3)。更新的重点是修复 .NET 使用 Brotli 解压算法时的缓冲区溢出漏洞 CVE-2026-111497。该漏洞影响所有平台,微软建议用户尽快更新。

修复了哪些漏洞

  • CVE-2026-111497:.NET 使用 Brotli 解压算法时存在缓冲区溢出,未经身份验证的攻击者可能借此读取或破坏进程内存,进而导致信息泄露、拒绝服务或权限提升。影响所有平台。
  • CVE-2026-114148:Linux 下 .NET tarball 的所有权元数据存在不安全问题,本地攻击者可能借此修改文件并提权。

此外,2026 年 10 月 13 日的版本没有完全修复 CVE-2026-70197(SocketAsyncEventArgs 内存损坏,涉及 .NET 8、9、10、11)和 CVE-2026-102870(Blazor WebAssembly 调试器,涉及 .NET 10、11)。微软因此重新发布了这两个漏洞的公告,并在本次更新中提供修复。

哪些应用可能受影响

通过以下方式处理 Brotli 压缩数据的应用可能受影响:

  • ASP.NET Core 请求解压
  • HttpClient 自动响应解压
  • System.IO.Compression 的 Brotli API

微软说明,请求解压和自动响应解压默认不开启。.NET Framework 不受影响。

CVE-2026-114148 的影响范围因版本而异。在 .NET 10 和 .NET 11 中,它只影响源码构建(source-build)的 tarball。在 .NET 8 和 .NET 9 中,它还影响通过 ASP.NET Core tarball 获取的发行版,即使用户并不从源码构建 .NET。

版本与更新方式

更新后的版本如下:

  • .NET 8:8.0.33
  • .NET 9:9.0.22
  • .NET 10:10.0.14
  • .NET 11:Release Candidate 3,RC2 用户需要更新到 RC3

微软给出的更新方式按部署形态区分:

  1. 依赖框架的应用:安装对应版本的新运行时,然后重启应用。
  2. 自包含应用:用新运行时重新构建并发布。微软特别说明,在主机上安装新运行时不会更新应用自带的运行时。
  3. 容器:使用更新后的 .NET 容器镜像重建并重新部署。
  4. 源码构建使用者:获取对应版本更新后的源码构建产物,并重新构建软件包。
  5. .NET 8 和 .NET 9 的 ASP.NET Core tarball 用户:使用刷新后的 ASP.NET Core Runtime tarball 更新安装。

可以用 dotnet --list-runtimes 查看机器上已安装的运行时。微软提醒,自包含应用和容器部署自带运行时,需要单独检查。

相关背景:Bugsink 作者批评 Brotli 维护状况

他称该漏洞最初被叫作 Node2Shell,后来改称 HTTP2Shell,可由恶意构造的 Brotli 负载触发。

他在文中称,Google 于 2026 年 2 月 27 日修复了该问题,但新版本直到 2026 年 10 月 21 日才发布。他还称,Google Brotli 仓库中有 3 个越界读取问题的修复以 PR 形式公开挂着,而维护者表示资源有限,有时间才发版。以上均为该作者的说法。

文中提到,Bugsink 正在添加关闭 Brotli 解码的开关(PR #568),并已向 Sentry 询问能否弃用 Brotli。他也建议各方考虑是否真的需要支持 Brotli。

来源