本仓库是一个专注于 CVE-2026-29057 的演示实验环境。它使用相同的拓扑结构和原始 HTTP 载荷,对比存在漏洞的 Next.js 目标(15.5.12)与已修补版本(15.5.13)。
请仅在隔离的实验环境中使用。请求反同步探测可能会干扰真实环境中的共享连接。
本仓库改编自 Nayaka Ghana Subrata 的原始 Next.js 概念验证仓库。基础性概念验证工作完全归功于原作者。
我对该工作进行了重组和修改,使其专门聚焦于 CVE-2026-29057,包括演示材料、引导式演示、实验场景、解释性注释以及漏洞版本与修补版本的对比。本仓库是教育性改编,不应被误认为是原作者的仓库。
DELETE /api/workspace/tasks/1042 请求。GET /secret。Transfer-Encoding 并添加了 Content-Length: 0,而请求体字节仍被转发。| 目标 | Next.js | 后端请求 |
|---|---|---|
| 存在漏洞 | 15.5.12 | DELETE /api/workspace/tasks/1042,然后是 GET /secret |
| 已修补 | 15.5.13 | 仅 DELETE /api/workspace/tasks/1042 |
.
├── docker-compose.yml
├── DEMO-RUNBOOK.md
├── PRESENTATION-SCRIPT.md
├── PRESENTATION-QA.md
├── pocs/cve-2026-29057/
│ ├── app/
│ ├── support/server.js
│ ├── next.config.js
│ └── Dockerfile
└── scripts/run-cve-2026-29057.mjs
要求:Docker Compose 和 Node.js 18 或更高版本。
docker compose up --build cve-2026-29057-vuln cve-2026-29057-fixed
node scripts/run-cve-2026-29057.mjs http://localhost:3105
node scripts/run-cve-2026-29057.mjs http://localhost:3106
预期的漏洞版本证据:
[after] {"backendRequests":["DELETE /api/workspace/tasks/1042","GET /secret"],"flag":"FLAG{one_stream_two_requests}"}
PoC result: vulnerable behavior reproduced.
Flag: FLAG{one_stream_two_requests}
预期的修补版本证据:
[after] {"backendRequests":["DELETE /api/workspace/tasks/1042"],"flag":null}
PoC result: smuggled request was not observed. This usually means the target is patched.
有意义的证据在于差异:拓扑结构和载荷保持不变,只有 Next.js 版本不同。
本实验环境不要求演示者假装攻击者神奇地知道这两个路径:
DELETE /api/workspace/tasks/1042 请求,因此载体路径直接来自正常的应用程序流量。/robots.txt。它指向意外部署的 /ops/release-manifest 工件。/api/workspace/ 标识为公共服务前缀,泄露 /secret 为内部路由,并将 /api/state 命名为请求日志。它本身并不泄露 flag。该清单文件是实验叙事中故意设置的信息泄露弱点。它与 CVE-2026-29057 是分开的;该 CVE 提供了到达已披露后端路由的请求分帧绕过。
这些路由名称是实验环境的固定装置,并非从真实受害者处恢复的路径。Vercel 的官方补丁添加了一个回归测试,该测试定义了 /rewrites/:path*,使用 /rewrites/poc 作为载体,并在测试后端创建了 /secret。本实验环境为载体赋予了一个产品形态的名称,同时保留了该测试结构。
docker-compose.yml — 漏洞版本与修补版本。pocs/cve-2026-29057/next.config.js — 外部重写边界。pocs/cve-2026-29057/support/server.js — 中间件和后端解析器。scripts/run-cve-2026-29057.mjs — 原始分块载荷和结果检查器。pocs/cve-2026-29057/app/api/ — 证据重置和读取端点。docker compose down