Hacker News 中文摘要

RSS订阅

理解最严重的.NET漏洞 -- Understanding the Worst .NET Vulnerability

文章摘要

文章分析了.NET历史上最严重的漏洞CVE-2025-55315,该漏洞涉及请求走私攻击,CVSS评分高达9.9。作者解释了该漏洞的原理、攻击方式、微软的修复方案以及防护措施,但强调自己并非安全专家,仅供参考。漏洞已在微软10月补丁日修复。

文章总结

标题:解析史上最严重的.NET漏洞:请求走私与CVE-2025-55315

2025年10月28日,微软在例行补丁日发布了针对所有受支持.NET版本的安全更新,并披露了一个CVSS评分高达9.9(满分10分)的严重漏洞——CVE-2025-55315。该漏洞属于HTTP请求走私类型,存在于ASP.NET Core中,可能允许攻击者绕过安全防护机制。

漏洞原理

HTTP请求走私是一种已知攻击手段,其核心在于代理服务器与后端服务器对HTTP请求的解析存在差异。攻击者通过构造特殊的畸形请求(如包含重复的Content-Length头或混淆Transfer-Encoding头),使得代理服务器认为是一个合法请求,而后端服务器却将其解析为两个独立请求,从而"走私"恶意请求。

CVE-2025-55315的特殊性在于利用了分块传输编码(Transfer-Encoding: chunked)中"块扩展"功能的解析差异。攻击者通过在块扩展中插入孤立的换行符(如单独的\n而非标准的\r\n),导致不同服务器对请求边界的识别不一致。

潜在危害

成功利用此漏洞可能导致: - 以其他用户身份登录(权限提升) - 绕过CSRF防护机制 - 访问本应受保护的内网端点 - 窃取用户凭证等敏感数据 - 缓存投毒攻击

修复方案

微软已通过强制严格校验块扩展中的换行符来修复该漏洞。当检测到非法换行符时,Kestrel服务器将直接返回400错误。

应对措施

建议用户立即升级至以下安全版本: - .NET 10:需更新至10.0.0-rc2 - .NET 9:升级到9.0.10+ - .NET 8:升级到8.0.21+ - ASP.NET Core 2.3:需更新Kestrel组件至2.3.6

对于无法升级的旧版本(如.NET Core 3.x/.NET 5-7),建议: 1. 在前端部署已修复的代理服务器(如Azure App Service已内置防护) 2. 强制使用HTTP/2/3协议(这些协议不受影响) 3. 避免直接操作请求流(如HttpRequest.Body)

检测方法

可通过发送包含畸形块扩展的测试请求来验证: bash echo -e "GET / HTTP/1.1\r\nHost:\r\nTransfer-Encoding: chunked\r\n\r\n1;\n" | nc 目标地址 80 若服务器持续等待响应,则可能存在漏洞;已修复版本会立即返回400错误。

注:本文技术细节基于微软安全公告和公开研究,实际防护措施应以官方指南为准。

评论总结

总结评论内容:

  1. 对VS新项目安全漏洞的无奈
  • 主要观点:开发者对新项目立即出现安全漏洞警告表示无奈
  • 关键引用:
    • "That feeling when you open a brand new project in VS and immediately get: 'The solution contains packages with vulnerabilities'"
    • "刚在VS中打开一个新项目就立即看到'解决方案包含有漏洞的包'时的感受"
  1. 生产与测试环境差异问题
  • 主要观点:指出生产环境和测试环境在使用代理时存在差异问题
  • 关键引用:
    • "production environments and test environments are not the same when you use proxys"
    • "使用代理时生产环境和测试环境不同,需要检查两者并保持与客户相同的连接类型"
  1. 基于Kestrel的广泛影响
  • 主要观点:指出漏洞影响范围广泛,涉及大量基于Kestrel的应用
  • 关键引用:
    • "It sounds like this is anything built upon Kestrel which is a lot"
    • "这似乎影响所有基于Kestrel构建的应用,数量非常庞大"
  1. 对无代理情况下漏洞的疑问
  • 主要观点:质疑无代理情况下漏洞的实际影响,认为需要特定条件才会触发
  • 关键引用:
    • "I still don't get how this would work without a proxy unless my own code manually parses the request from scratch"
    • "除非自己的代码从头开始解析请求,否则不理解无代理时漏洞如何生效"
    • "The single application version of the vulnerability seems to me to be very unlikely"
    • "单应用版本的漏洞看起来非常不可能发生"
  1. 代理情况下的明确风险
  • 主要观点:明确在代理场景下确实存在严重风险
  • 关键引用:
    • "The proxy version of the vulnerability seems quite clear to me, and pretty dangerous"
    • "代理版本的漏洞对我来说很清楚,而且相当危险"