Anonymous Intelligence Signal

NPOI 修复关键安全漏洞 CVE-2026-26171 与 CVE-2026-33116,强制升级依赖版本

human The Lab unverified 2026-04-15 21:22:50 Source: GitHub Issues

NPOI 项目核心依赖库 `System.Security.Cryptography.Xml` 存在已知高危漏洞,迫使项目维护者紧急更新其依赖锁定策略。该漏洞影响广泛,因为 NPOI 的 `NPOI.OOXML` 库依赖此包提供数字签名支持。问题核心在于,即使项目指定了最低版本 `>= 8.0.2`,针对 .NET 10 的消费者仍会自动解析到同样存在漏洞的 `10.0.5` 版本,这是 .NET 10 SDK 的默认行为,导致安全补丁无法生效。

为解决此问题,NPOI 维护团队实施了双重修复方案。首先,在 `Directory.Packages.props` 中将中心化版本从 `8.0.2` 提升至已修复的 `8.0.3`,为所有非 .NET 10 的目标框架提供补丁。其次,针对 `net10.0` 目标框架,在 `ooxml/NPOI.OOXML.Core.csproj` 和 `solution/NPOI.Pack.csproj` 中,通过 `VersionOverride="10.0.6"` 显式强制指定依赖版本,确保发布的 NuGet 包中,针对 `net10.0` 的依赖组声明为 `>= 10.0.6`,从而强制使用者避开存在漏洞的 `10.0.5` 版本。

此次修复凸显了现代 .NET 生态中依赖解析的潜在风险,特别是平台特定版本自动匹配机制可能绕过显式安全更新。对于使用 NPOI 进行 Office 文档处理并涉及数字签名的项目,必须确保更新至包含此修复的 NPOI 版本,或手动验证其 `System.Security.Cryptography.Xml` 依赖已升级至安全版本(8.0.3 或 10.0.6),否则应用将暴露在已知漏洞风险之下。