emresandikci/nextjs-cve-2026-23870-checker
GitHub: emresandikci/nextjs-cve-2026-23870-checker
针对 Next.js 2026 年 5 月安全公告中全部 13 个漏洞的 CLI 检测与一键修复工具,支持交互扫描、CI 集成和自动依赖升级。
Stars: 0 | Forks: 0
# @emstack/nextjs-cve-2026-23870-checker
针对 [Next.js 2026 年 5 月安全版本](https://vercel.com/changelog/next-js-may-2026-security-release) 中全部 13 个漏洞的 CLI 检测与修复工具,包括 **CVE-2026-23870**(React Server Components 中的 DoS 漏洞)。
## 快速入门
```
# 交互模式 (推荐)
npx @emstack/nextjs-cve-2026-23870-checker
# 检查项目
npx @emstack/nextjs-cve-2026-23870-checker ~/my-app
# 修复
npx @emstack/nextjs-cve-2026-23870-checker ~/my-app --fix
```
## 涵盖的公告
| ID | 严重程度 | 描述 |
|----|----------|-------------|
| GHSA-8h8q-6873-q5fj | 高 | **CVE-2026-23870** — React Server Components 中的 DoS 漏洞 |
| GHSA-267c-6grr-h53f | 高 | App Router 中 segment-prefetch URL 授权绕过 |
| GHSA-26hh-7cqf-hhc6 | 高 | segment-prefetch 绕过的不完全修复跟进 |
| GHSA-36qx-fr4f-26g5 | 高 | i18n 默认语言环境路径绕过代理授权 |
| GHSA-492v-c6pp-mqqv | 高 | 动态路由参数注入导致绕过 |
| GHSA-mg66-mrh9-m8jx | 高 | 影响 Cache Components 的连接耗尽 |
| GHSA-c4j6-fc7j-m34r | 高 | 通过 WebSocket 升级请求发起 SSRF |
| GHSA-h64f-5h5j-jqjh | 中 | Image Optimization API 利用 (DoS) |
| GHSA-wfc6-r584-vfw7 | 中 | RSC 响应投毒 (缓存) |
| GHSA-ffhc-5mcf-pf4q | 中 | App Router 中的 CSP nonce 泄露 |
| GHSA-gx5p-jg67-6x7h | 中 | 通过 `beforeInteractive` 脚本中的不受信输入实现 XSS |
| GHSA-3g8h-86w9-wvmq | 低 | 通过中间件重定向进行缓存投毒 |
| GHSA-vfv6-92ff-j949 | 低 | 缓存清除碰撞漏洞 |
## 受影响的版本
| 包 | 有漏洞版本 | 已修复版本 |
|---------|-----------|---------|
| `next` 13.x, 14.x | 所有版本 | 升级至 15.5.18 或 16.2.6 |
| `next` 15.x | ≤ 15.5.17 | 15.5.18 |
| `next` 16.x | ≤ 16.2.5 | 16.2.6 |
| `react-server-dom-*` 19.0.x | ≤ 19.0.5 | 19.0.6 |
| `react-server-dom-*` 19.1.x | ≤ 19.1.6 | 19.1.7 |
| `react-server-dom-*` 19.2.x | ≤ 19.2.5 | 19.2.6 |
已检查的 `react-server-dom-*` 包:`webpack`、`turbopack`、`bun`、`esm`、`deno`。
## 用法
### 交互模式
在未提供参数时默认启动。会遍历根目录以发现 Next.js 项目,让你选择要扫描的项目,并可选地应用修复。
```
npx @emstack/nextjs-cve-2026-23870-checker
npx @emstack/nextjs-cve-2026-23870-checker -i
```
### 检查项目
```
npx @emstack/nextjs-cve-2026-23870-checker /path/to/your/nextjs-app
```
如果发现漏洞,将以代码 `1` 退出 — 适配 CI 环境。
### 检查多个项目
```
npx @emstack/nextjs-cve-2026-23870-checker ~/app1 ~/app2 ~/app3
```
打印每个项目的报告以及末尾的汇总行。
### 预览修复(不写入文件)
```
npx @emstack/nextjs-cve-2026-23870-checker ~/my-app --dry-run
```
### 应用修复
更新 `package.json` 并运行相应的安装命令(`bun`、`pnpm`、`yarn` 或 `npm` — 根据锁文件自动检测)。
```
npx @emstack/nextjs-cve-2026-23870-checker ~/my-app --fix
# 一次修复多个项目
npx @emstack/nextjs-cve-2026-23870-checker ~/app1 ~/app2 --fix
```
### JSON 输出
```
npx @emstack/nextjs-cve-2026-23870-checker ~/my-app --json
```
### 所有选项
```
Usage:
npx @emstack/nextjs-cve-2026-23870-checker [path...] [options]
Arguments:
path Project path(s) to scan (default: .)
Options:
-i, --interactive Interactive mode (default when no args given)
--fix Update package.json and run install
--dry-run Show what would change without writing files
--json Output results as JSON
--help, -h Show this help
```
### 开发
```
bun install
bun run dev /path/to/your/nextjs-app
bun run build # produces dist/cli.js
```
## 示例输出
```
Next.js May 2026 Security Release — 13 advisories
Scanning: /my-app
✗ Found 2 vulnerable package(s):
next
Installed: ^15.3.0 → Fix: 15.5.18
Advisories (13):
[High] [CVE-2026-23870] GHSA-8h8q-6873-q5fj — DoS in React Server Components
[High] GHSA-267c-6grr-h53f — Segment-prefetch URL authorization bypass in App Router
...
react-server-dom-webpack
Installed: ^19.1.5 → Fix: 19.1.7
Advisories (2):
[High] [CVE-2026-23870] GHSA-8h8q-6873-q5fj — DoS in React Server Components
[Moderate] GHSA-wfc6-r584-vfw7 — RSC response poisoning (cache)
Patching is the only complete mitigation. WAF-level protection unavailable.
Source: https://vercel.com/changelog/next-js-may-2026-security-release
Run with --fix to update package.json and install patched versions.
```
## 许可证
MIT
标签:App Router, CISA项目, CVE-2026-23870, DoS, MITM代理, OSV, React Server Components, SSRF, Vercel, XSS, XXE攻击, 中间件, 代码安全, 前端安全, 动态分析, 安全漏洞检测, 库, 应急响应, 文档结构分析, 漏洞修复, 漏洞情报, 漏洞枚举, 缓存投毒, 网络安全, 网络安全培训, 网络安全审计, 自动化攻击, 隐私保护