dbwlsdnr95/CVE-2025-29927
GitHub: dbwlsdnr95/CVE-2025-29927
Next.js Middleware 授权绕过漏洞 CVE-2025-29927 的研究用 PoC 环境,演示通过伪造内部请求标头绕过认证的技术。
Stars: 0 | Forks: 0
# 研究:Next.js Middleware 授权绕过分析
  
## 项目概述 (Project Overview)
本项目是为了深入分析并演示 **Next.js Middleware** 中发现的授权绕过漏洞 **CVE-2025-29927** 而搭建的 **研究用 PoC(概念验证)环境**。
本项目重点关注当攻击者任意伪造并发送 Next.js 用于处理内部请求的 `x-middleware-subrequest` 标头时,导致 Middleware 的安全验证逻辑失效的 **授权绕过(Auth Bypass)** 漏洞,并实现了因此导致的管理员页面访问控制失效场景。
### 研究目标
1. 理解 **Next.js Middleware** 的请求处理流程及内部标头运作原理
2. 分析通过伪造 `x-middleware-subrequest` 标头实现授权绕过的技术
3. 验证框架层面的访问控制漏洞及其防御方法
## 技术栈 (Tech Stack)
| 分类 | 技术栈 | 版本 | 备注 |
| :--- | :--- | :--- | :--- |
| **Framework** | Next.js | `13.4.0` | **受影响的目标版本** |
| **Language** | TypeScript | `5.0` | Middleware 实现 |
| **Feature** | Middleware | - | 攻击面 |
| **Environment** | Node.js | `18` | 运行时环境 |
## 漏洞分析报告 (Vulnerability Report)
本项目分析的核心漏洞如下。
### 1. Middleware 授权绕过
* **CVE-2025-29927**
* **描述**:Next.js 内部使用 `x-middleware-subrequest` 标头来防止无限循环。在受影响的版本中,该标头未从外部请求中被移除,导致攻击者在请求中包含该标头时,Middleware 会将其误判为内部请求从而跳过认证逻辑。
* **风险等级**:**高(授权绕过)**
* **实现位置**:[存在漏洞的 Middleware](middleware.ts) (`middleware.ts`)
### 2. 标头伪造
* **方法论**
* **描述**:客户端通过篡改 HTTP 请求标头绕过服务器逻辑的技术。
* **Payload 示例**:`x-middleware-subrequest: 1`
## 复现步骤 (How to Reproduce)
建议在隔离的本地环境中运行以进行研究及验证。
```
# 容器运行
docker-compose up --build
```
1. **正常访问(失败)**:访问 `http://localhost:3001/admin` 时返回 401 Unauthorized。
2. **漏洞利用模拟**:
curl -v -H "x-middleware-subrequest: 1" http://localhost:3001/admin
* **结果**:200 OK(成功访问管理员页面)
## 缓解措施 (Mitigation)
* **更新 Next.js**:升级到最新版本以确保内部标头与外部请求隔离。
* **加强标头验证**:在 Middleware 或反向代理(如 Nginx)中强制移除(Strip)来自不可信来源的 `x-middleware-*` 系列标头。
标签:CISA项目, CVE-2025-29927, GNU通用公共许可证, Header注入, MITM代理, Node.js, PoC, SDLC, TypeScript, Web安全, Web报告查看器, x-middleware-subrequest, 中间件漏洞, 前端安全, 协议分析, 安全插件, 开放策略代理, 暴力破解, 权限提升, 漏洞分析, 自动化攻击, 自动化攻击, 蓝队分析, 认证绕过, 访问控制失效, 请求拦截, 路径探测