作者 | Renato Losio
译者 | 平川
该漏洞在 ASP.NET Core 10.0、9.0、8.0 版本以及 Kestrel 包 2.x 版本中均存在。获得授权的攻击者可以通过 HTTP 请求和响应的不一致解析来绕过一项安全特性。微软表示,对于 HTTP 请求 / 响应走私场景,当前并没有什么措施能够缓解,并强烈推荐升级到他们列出的修复版本,以防安全绕过。
HTTP 请求走私利用了服务器和代理解析 HTTP 请求的差异,使用 Content-Length 或 Transfer-Encoding 等头字段将一个请求隐藏在另一个请求中。在后续发表的一篇文章中,微软安全响应中心 解释道:
9.9 的得分反映了及时解决这个问题的重要性,这涉及到一个可以影响应用程序认证和授权的安全功能绕过。……根据应用程序处理请求的方式,若未及时修复此漏洞,可能导致权限提升或请求操纵等安全风险。
微软.NET 安全技术产品经理 Barry Dorrans 在一条评论中阐明了高分原因:
这个漏洞使得 HTTP 请求走私成为可能,仅对 ASP.NET Core 来说,它的评分远不会那么高,但我们不是这样评分的。我们是根据这个漏洞对基于 ASP.NET 构建的应用程序可能产生的影响来评分的。
对于 ASP.NET Core 应用程序,如果你正在使用 HttpRequest.Body 或 HttpRequest.BodyReader,或其他类似的方法,那么即使你没有明确使用代理服务器,你可能也容易受到攻击。即使你不认为你的应用程序是一个代理或者使用了代理,只要你在做“类似代理”的事情,你可能就容易受到攻击。
根据应用程序处理请求的方式,该漏洞可能导致权限提升、服务器端请求伪造(SSRF)、跨站请求伪造(CSRF)以及绕过输入验证的注入攻击等安全风险。微软建议开发人员检查代理配置,确保它能规范化请求并检测走私攻击尝试。
由于微软不会针对 EOL 软件发布 CVE,所以 Reddit 上的许多开发人员最初对该漏洞将如何影响.NET 6 及更早版本产生了困惑。
为了解决这个问题,开发人员必须安装 ASP.NET Core 8、9 或 10 运行时 /SDK 的补丁版本,或将 Microsoft.AspNetCore.Server.Kestrel.Core 更新到 2.3.6 或更高版本。对于缺少官方支持的.NET 6,有 第三方发布的版本 解决了这一漏洞。返回搜狐,查看更多
评论 (0)