ASP.NET Core的CVSS 9.9分漏洞,难道.NET所有版本都逃不过此劫?
摘要:背景 在2025年10月的微软补丁星期二更新中,一个针对 ASP.NET Core 的漏洞 CVE-2025-55315 引起了安全社区的高度关注。该漏洞被美国国家漏洞数据库 (NVD) 评定为 CVSS 3.1 基础分 9.9 (高危),
背景
在2025年10月的微软补丁星期二更新中,一个针对 ASP.NET Core 的漏洞 CVE-2025-55315 引起了安全社区的高度关注。该漏洞被美国国家漏洞数据库 (NVD) 评定为 CVSS 3.1 基础分 9.9 (高危),这是一个极其罕见的高分,预示着其巨大的潜在风险 。
CVSS 9.9 分的严重性是什么概念?
为了准确理解 9.9 分的严重级别,我们可以将其与历史上一些著名的漏洞进行对比:
Log4Shell (CVE-2021-44228): 这个席卷全球的 Java 日志库漏洞,因其影响范围广、利用难度低,获得了完美的 10.0 分 。
Shellshock (CVE-2014-6271): 这个存在于 Bash shell 中的严重漏洞,允许远程命令执行,其 CVSS v3.1 评分为 9.8 分 。
Heartbleed (CVE-2014-0160): 这个曾导致大规模数据泄露的 OpenSSL 漏洞,虽然影响巨大,但其 CVSS v3.1 评分仅为 7.5 分 。
通过对比可见,CVE-2025-55315 的 9.9 分,已将其置于与 Log4Shell 和 Shellshock 同等级别的严重威胁行列,需要所有.NET 开发者和运维团队给予最高优先级的关注。
微软安全项目经理 Barry Dorrans 甚至直言,这个漏洞的 CVSS 评分是“我们有史以来最高的” ,并不是危言耸听。
官方链接参考:
NVD 漏洞详情: https://nvd.nist.gov/vuln/detail/CVE-2025-55315
微软安全更新指南: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-55315
GitHub Issue 讨论: https://github.com/dotnet/aspnetcore/issues/64033
CVE-2025-55315漏洞是什么?
简单说,这是一个 HTTP 请求走私 (HTTP Request Smuggling, CWE-444) 漏洞 。它发生在 ASP.NET Core 的心脏——Kestrel Web 服务器中。攻击者可以发送一个“畸形”的 HTTP 请求,让你的前端代理(比如 Nginx、负载均衡器)和后端的 Kestrel 服务器对这个请求的“边界”产生误解,从而把恶意请求“走私”进去,绕过你的所有安全检查 。
受影响范围
以下.NET版本均受此漏洞影响 :
.NET 10: ASP.NET Core 10.0.0-rc.1.25451.107 及更早版本。
.NET 9: ASP.NET Core 9.0.9 及更早版本。
.NET 8: ASP.NET Core 8.0.20 及更早版本。
.NET Core 2.x: 引用了 Microsoft.AspNetCore.Server.Kestrel.Core NuGet 包 2.3.0 及更早版本。
可以看到这个漏洞影响范围极广,从古老的.NET Core 2.3 到最新的.NET 8、.NET 9 乃至.NET 10 预览版,几乎是“全家桶”式的沦陷 。
.NET 3/4/5/6/7 未提及不是因为没问题,只是因为官方已经不再维护了,有bug也不会修复,不想升sdk可以换成https://docs.herodevs.com/net 的镜像。
修复措施
微软官方明确指出,不存在任何缓解措施或临时解决方案 。唯一的修复途径是升级
对于.NET 8, 9, 10 项目: 升级至最新的.NET SDK 版本。
对于.NET Core 2.x 项目: 将 Microsoft.AspNetCore.Server.Kestrel.Core NuGet 包的引用更新至 2.3.6 或更高版本 。
什么是HTTP 请求走私?
HTTP 请求走私是一种利用 Web 架构中前后端服务器对 HTTP 请求边界解析不一致的攻击技术。在一个典型的 Web 架构中,前端代理(如反向代理、CDN)会通过一个持久的 TCP/TLS 连接,将来自多个用户的请求“管道化”地转发给后端 Kestrel 服务器 。为了正确地分割这些请求,前后端必须对每个请求的结束位置达成共识。
HTTP/1.1 规范提供了两种定义请求体长度的方式:Content-Length 和 Transfer-Encoding: chunked。规范规定,当两者同时存在时,Transfer-Encoding 头的优先级更高 。然而,并非所有服务器实现都严格遵守此规则,或在处理被混淆、格式不规范的头时行为不一,这就为攻击创造了条件 。
