Next.js WebSocket Upgrade Handler SSRF

Posted

CVE-2026-44578 — Next.js WebSocket Upgrade Handler SSRF

一、漏洞原理

Next.js自托管部署使用内置Node.js服务器处理HTTP请求。WebSocket升级请求的处理逻辑中缺少对目标地址的校验,攻击者可通过发送包含绝对 URL 的精心构造请求,诱使服务器将连接请求代理到任意目标,从而访问内部或外部资源,这可能导致敏感的内部服务或云元数据端点暴露。

该漏洞仅限自托管

受影响的版本:

Next.js 13.4.13 – 15.5.15,16.0.0 – 16.2.4

二、对应逻辑处理代码

Next.js 在处理 WebSocket 升级请求时,存在以下逻辑,我们看看存在漏洞版本的关键代码逻辑实现

image-20260517234153750

问题点就在最后这个判断:只要 parsedUrl.protocol 存在,就直接走 proxyRequest()

修复过后的对应代码逻辑是下面这种情况

image-20260517234457856

三、下面是模拟真实云业务环境的SSRF漏洞,直接读取元数据(以下只是靶场实践)

攻击者构造以下Websocket升级处理请求,以及发送包含绝对URI

获取元数据列表

image-20260518001240592

http:///latest/meta-data/ 中的 /latest/meta-data/ 只是借用了 AWS IMDS 的经典路径格式;在该实验环境中,真正被访问的是 localhost:80 上的 fake IMDS,而不是云上真实的 169.254.169.254。如果在真实环境中,可以替换为:http://169.254.169.254/latest/meta-data

获取IAM凭据

image-20260518002449275

获取用户数据

image-20260518002601083