aliksir/nextjs-security-scanner
GitHub: aliksir/nextjs-security-scanner
一款零依赖的 Bash 安全扫描脚本,专门检测 Next.js 项目中的 React2Shell 远程代码执行漏洞(CVE-2025-55182)及凭据泄露风险。
Stars: 0 | Forks: 0
# nextjs-security-scanner
用于检测 Next.js 项目中的 CVE-2025-55182 (React2Shell) 和凭据泄露的 Bash 脚本。零依赖。
**[日本語版 README はこちら](README_ja.md)**
## CVE-2025-55182: React2Shell
CVSS: **10.0 (CRITICAL)** | CWE-502: Deserialization of Untrusted Data | SNORT SID: 65554
Next.js Server Components 中因不可信数据反序列化导致的未认证远程代码执行。攻击者向任何 Next.js Server Component 端点发送精心构造的 HTTP 请求;服务器反序列化该 payload 并执行任意代码。
**受影响版本:**
| 软件包 | 受影响范围 |
|---------|-----------------|
| Next.js | 15.0.0–15.0.4, 15.1.0–15.1.8, 15.2.0–15.2.5, 15.3.0–15.3.5, 15.4.0–15.4.7, 15.5.0–15.5.6, 15.6.0, 16.0.0–16.0.6 |
| React | 19.0.0, 19.1.0, 19.1.1, 19.2.0 |
**参考链接:**
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2025-55182
- Cisco Talos: 在 https://blog.talosintelligence.com/ 搜索 "React2Shell"
## 此扫描器检查的内容
**阶段 1 — Next.js 版本:** 读取 `package.json`、`package-lock.json` 和 `yarn.lock` 以查找已解析的 Next.js 版本,并与受影响范围进行比对。
**阶段 2 — React 版本:** 对 React (19.0.0, 19.1.0, 19.1.1, 19.2.0) 采取相同的检测方式。
**阶段 3 — App Router / Server Components:** 检测 `app/` 目录和 `"use server"` 指令。启用了 Server Components 的受影响版本属于活跃攻击面。
**阶段 4 — 凭据泄露:** 扫描 `.env*` 文件(排除 `.env.example` 和 `.env.sample`)、`next.config.*` 以及源代码文件中的 API 密钥、数据库 URL、JWT 密钥和硬编码的密钥前缀(`sk-`、`AKIA`、`ghp_`、`npm_`)。
**阶段 5 — SSH 密钥:** 查找提交到项目内部的私钥文件(`id_rsa`、`*.pem`、`*.p12` 等)和 `.ssh/` 目录。
**阶段 6 — 云配置:** 检查 Docker Compose 文件中的硬编码密钥、Kubernetes 清单中的服务账号令牌泄露,以及 AWS SDK 使用情况中的 IMDSv2 提示。
**阶段 7 — IOC 检查:** 根据 Cisco Talos 情报搜索 C2 IP 地址以及可疑的 `/tmp/` 点文件模式(Linux)。
```
C2 IPs (Cisco Talos): 144.172.102.88 / 172.86.127.128 / 144.172.112.136 / 144.172.117.112
```
**阶段 8 — 汇总:** CRITICAL/WARNING/INFO 计数及修复步骤。
## 安装
无需安装。下载并运行:
```
curl -O https://raw.githubusercontent.com/aliksir/nextjs-security-scanner/main/scan.sh
bash scan.sh [target-directory]
```
或克隆:
```
git clone https://github.com/aliksir/nextjs-security-scanner.git
bash nextjs-security-scanner/scan.sh /path/to/your/nextjs-app
```
## 用法
```
# 扫描当前目录
bash scan.sh
# 扫描特定项目
bash scan.sh /path/to/nextjs-app
# 在 CI/CD 中 (非零退出 = 终止 pipeline)
bash scan.sh . || exit 1
```
**退出代码:**
- `0` — 无问题
- `1` — 警告(检测到凭据特征,需审查)
- `2` — 严重(确认存在受影响版本,需立即采取行动)
## 输出示例
```
=== Next.js Security Scanner ===
Target: /home/user/myapp
Date: 2026-04-04 12:00
CVE: CVE-2025-55182 (React2Shell, CVSS 10.0)
[Phase 1] Next.js version check
[CRITICAL] Next.js v15.2.4 is vulnerable to CVE-2025-55182 (React2Shell)
-> package.json: "next": "^15.2.4"
-> This version allows unauthenticated RCE via deserialization of Server Components
[Phase 2] React version check
[CRITICAL] React v19.1.0 is in the CVE-2025-55182 vulnerable list
[Phase 3] App Router / Server Components detection
[INFO] App Router detected (app/ directory exists)
[CRITICAL] Vulnerable Next.js + Server Components = active attack surface for React2Shell
...
=== Scan Summary ===
CRITICAL : 3
WARNING : 0
INFO : 2
CRITICAL issues found. Immediate action required.
=== Remediation (CVE-2025-55182) ===
1. Upgrade Next.js to a patched version:
npm install next@latest
...
```
## 修复建议
**立即升级:**
```
npm install next@latest
npm install react@latest react-dom@latest
```
查看 https://github.com/vercel/next.js/releases 了解每个次要版本系列中首次修复的版本。
**如果怀疑已被利用:**
1. 轮换所有密钥(API 密钥、数据库凭据、JWT 密钥、SSH 密钥、云 IAM)
2. 检查后渗透痕迹:
ps aux | grep -E '\.sh|\.py'
crontab -l; cat /etc/cron*
ss -tnp | grep -E '144\.172|172\.86'
ls -la /tmp/ | grep '^\.'
3. 在防火墙阻断 C2 IP:`144.172.102.88`、`172.86.127.128`、`144.172.112.136`、`144.172.117.112`
4. 启用 SNORT 规则 SID: 65554
## 用作 Claude Code skill
```
bash scan.sh [target-directory]
```
触发关键词:"next.js security check"、"CVE-2025-55182"、"React2Shell"、"Next.js vulnerability scan"
详见 `claude-code/SKILL.md` 中的 skill 封装说明。
## 免责声明
本工具仅供**防御性安全用途**。它仅对您自己的项目文件执行本地只读检查。不建立任何网络连接,不向外部发送任何数据,也不执行任何漏洞利用。
漏洞信息和 IOC 数据基于公开来源(NVD、Cisco Talos)。本扫描器可能会产生误报或遗漏某些攻击载体。它不能替代专业的安全审计、渗透测试或供应商提供的安全补丁。
**使用风险自负。** 作者对因使用本工具而造成的任何损害不承担任何责任。
## 许可证
MIT — 详见 [LICENSE](LICENSE)
标签:App Router, CVE-2025-55182, DNS 反向解析, GraphQL安全矩阵, RCE检测, React, React2Shell, Server Components, SSH密钥检测, StruQ, Syscalls, 云安全监控, 云配置审计, 凭证暴露, 反序列化漏洞, 安全助手, 安全扫描器, 密钥泄露, 应用安全, 环境变量检查, 网络安全, 隐私保护, 零依赖, 静态分析