微软已发布带外(Out-of-Band, OOB)安全更新,紧急修补了一个存在于 ASP.NET Core Data Protection 组件中的严重漏洞。该漏洞被追踪为 CVE-2026-40372,允许未经身份验证的攻击者通过伪造身份验证 Cookie,在受影响系统上获取 SYSTEM 级别的最高权限。

漏洞详情:CVE-2026-40372
1. 漏洞成因
该漏洞源于 .NET 10.0.6 版本引入的一个回归错误(Regression)。
- 技术细节:
Microsoft.AspNetCore.DataProtection包(版本 10.0.0 – 10.0.6)中的托管身份验证加密器在计算负载的 HMAC 验证标签时,对错误字节的处理存在缺陷,导致在某些情况下丢弃了计算出的哈希值。 - 后果:这种损坏的验证机制使得攻击者能够构造出能够通过真实性检查的伪造负载。
2. 潜在危害
- 权限提升:攻击者可解密原本受保护的数据,包括身份验证 Cookie、防伪令牌(Anti-forgery tokens)、TempData 和 OIDC 状态信息。
- 会话劫持与令牌伪造:利用伪造的负载,攻击者可以以特权用户身份通过身份验证,并诱使应用程序颁发合法签名的令牌(如会话刷新令牌、API 密钥、密码重置链接等)。
- 持久性威胁:关键注意的是,即使服务器升级到修复版本 10.0.7,此前由攻击者伪造并颁发的令牌仍然有效,除非管理员主动轮换(Rotate)DataProtection 密钥环。
- 数据泄露与篡改:攻击者可能泄露敏感文件并修改应用数据,但不会直接导致系统停机(可用性不受影响)。
修复与缓解措施
微软高级项目经理 Rahul Bhandari 强烈建议所有使用 ASP.NET Core Data Protection 的客户立即采取以下行动:
1. 立即升级
将 Microsoft.AspNetCore.DataProtection NuGet 包更新至 10.0.7 或更高版本。
dotnet add package Microsoft.AspNetCore.DataProtection --version 10.0.7
2. 重新部署应用
更新包后,必须重新部署应用程序以激活修复后的验证例程,确保后续伪造的负载被自动拒绝。
3. ⚠️ 关键步骤:轮换密钥环 (Key Ring Rotation)
由于漏洞窗口期内生成的伪造令牌在升级后依然有效,仅升级补丁不足以完全消除风险。
- 操作:必须强制轮换 ASP.NET Core Data Protection 的密钥环。
- 目的:使所有旧密钥(包括可能被攻击者利用来签名伪造令牌的密钥)失效,从而让之前颁发的所有会话和令牌作废,迫使所有用户重新登录。
背景与关联事件
此次紧急补丁是微软近期密集安全行动的一部分:
- Kestrel HTTP 请求走私漏洞(10月):
- 微软此前修补了 Kestrel Web 服务器中的一个高危漏洞,被评为 ASP.NET Core 历史上“最严重”的安全漏洞之一。成功利用可劫持用户凭据或绕过前端安全控制。
- Windows Server 重启问题(本周初):
- 微软于周一发布了另一组带外更新,用于解决安装 2026 年 4 月安全更新后导致部分 Windows Server 系统反复重启的问题(涉及 KB5082063 等)。
- 发现过程:
- CVE-2026-40372 是在用户报告安装 .NET 10.0.6 后出现应用程序解密失败后被发现的,随后微软确认了其中的安全风险。
💡 给开发者的建议
- 检查依赖:立即扫描项目中是否引用了
Microsoft.AspNetCore.DataProtection10.0.0 至 10.0.6 版本。 - 自动化监控:配置 CI/CD 管道以自动检测并阻断包含已知漏洞依赖的版本发布。
- 密钥管理最佳实践:定期轮换 DataProtection 密钥应成为标准运维流程,这不仅有助于缓解此类漏洞,也是良好的安全卫生习惯。











评论