此仓库包含关于 Next.js 中 CVE-2025-29927 漏洞的概念验证,其中内部标头 x-middleware-subrequest 可被利用来绕过中间件检查(如身份验证)。
🧪 本项目已在 Next.js v13.4.19 上测试。
git clone https://github.com/goncalocsousa1/CVE-2025-29927.git
cd CVE-2025-29927
npm install
npm run dev
http://localhost:3000
该应用演示了一个简单的身份验证系统,其中包含一个受保护的路由,可以利用 CVE-2025-29927 漏洞绕过。其工作原理如下:
主页(/)
auth-token)受保护页面(/protected)
auth-token cookie 是否存在的中间件保护中间件保护
auth-token cookie/protected/* 路由,则重定向到主页漏洞演示
x-middleware-subrequest 标头auth-token cookie,攻击者也可以访问受保护的路由该应用包含一个位于 /protected 的受保护路由,通常需要身份验证。然而,通过在请求中使用标头 x-middleware-subrequest: middleware,例如 curl -H "x-middleware-subrequest: middleware" http://localhost:3000/protected,你可以绕过身份验证检查。
你也可以使用 Burp Suite 通过拦截请求并手动添加标头来重现此行为。
要使用 Burp Suite 尝试此操作,请打开 Proxy 选项卡并进入 Intercept 子选项卡。确保 Intercept is On,然后单击 Open Browser 并导航到受保护路由:http://localhost:3000/protected

Burp Suite 将捕获对受保护路由的请求。在那里,添加以下标头:x-middleware-subrequest: middleware(在上面的截图中突出显示)。最后,转发请求并访问受保护的路由。

更新至以下已修补版本之一: