文章总结: VercelLabs开源了命令行工具fix-react2shell-next,用于自动修复高危漏洞CVE-2025-66478。该工具能扫描项目,识别并升级受影响的Next.js和ReactServerComponents依赖至安全版本,支持多种包管理器。建议开发者使用npx命令一键检测与修复,并将其集成到CI/CD流程中,以自动化地保障应用安全,防止远程代码执行攻击。
综合评分: 100
文章分类: 漏洞预警,解决方案,安全工具,WEB安全,应急响应
fix-react2shell-next——一个命令来修复应用程序中的CVE-2025-66478
原创
一个人挺好
一个人挺好zhy
2025年12月9日 18:05
上海
项目地址
https://github.com/vercel-labs/fix-react2shell-next
该项目是 NextJS 官方开源的专门用于修复 CVE-2025-66478(React 2 Shell RCE)远程代码执行漏洞的命令行工具,支持一键自动检测项目中是否包含受漏洞影响的依赖包,并升级至对应的修复版本。
fix-react2shell-next 是由 Vercel Labs 开发的安全漏洞修复工具,专门用于修复 CVE-2025-66478(React 2 Shell RCE)远程代码执行漏洞。该漏洞影响 Next.js 和 React Server Components (RSC) 应用,属于高危安全漏洞。
核心功能
1. 自动化漏洞扫描
- 递归扫描:自动查找项目中所有的
package.json文件 - 智能过滤:排除
node_modules、构建输出等无关目录 - 多包管理器支持:兼容 npm、yarn、pnpm、bun 等主流包管理器
2. 漏洞检测范围
-
Next.js 框架:检测所有受影响的版本
-
React RSC 包:
-
react-server-dom-webpack -
react-server-dom-parcel -
react-server-dom-turbopack
3. 版本升级策略
根据当前版本自动升级到对应的安全版本,确保修复的确定性。
技术架构
扫描引擎
JavaScript
复制
// 伪代码示例
functionscanProject(rootPath){
const packageJsonFiles =findPackageJsonFiles(rootPath);
const vulnerabilities =[];
for(const file of packageJsonFiles){
const deps =parseDependencies(file);
const vulnDeps =checkVulnerableVersions(deps);
if(vulnDeps.length>0){
vulnerabilities.push({ file,vulnerabilities: vulnDeps });
}
}
return vulnerabilities;
}
版本映射系统
工具内置完整的版本映射表,确保升级路径的准确性:
Next.js 版本映射
表格
| 当前版本范围 | 修复版本 |
| — | — |
| 15.0.0 – 15.0.4 | 15.0.5 |
| 15.1.0 – 15.1.8 | 15.1.9 |
| 15.2.0 – 15.2.5 | 15.2.6 |
| 15.3.0 – 15.3.5 | 15.3.6 |
| 15.4.0 – 15.4.7 | 15.4.8 |
| 15.5.0 – 15.5.6 | 15.5.7 |
| 16.0.0 – 16.0.6 | 16.0.7 |
React RSC 包版本映射
表格
| 当前版本 | 修复版本 |
| — | — |
| 19.0.0 | 19.0.1 |
| 19.1.0, 19.1.1 | 19.1.2 |
| 19.2.0 | 19.2.1 |
使用指南
安装与运行
bash
# 交互式检查与修复
npx fix-react2shell-next
# 自动修复(适合CI/CD)
npx fix-react2shell-next --fix
# 仅检查不修复
npx fix-react2shell-next --dry-run
# JSON格式输出(便于脚本处理)
npx fix-react2shell-next --json
工作流程
- 扫描阶段:递归查找所有
package.json文件 - 检测阶段:对比依赖版本与漏洞版本列表
- 修复阶段:自动更新到安全版本
- 刷新阶段:重新生成锁文件
最佳实践
1. 在CI/CD中集成
yaml
# GitHub Actions 示例
name: Security Check
on:[push, pull_request]
jobs:
security-scan:
runs-on: ubuntu-latest
steps:
-uses: actions/checkout@v3
-name: Fix React2Shell vulnerability
run: npx fix-react2shell-next --fix
-name: Commit changes
run:|
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
git add -A
git diff --quiet && git diff --staged --quiet || git commit -m "Fix CVE-2025-66478"
git push
2. 开发环境使用
JSON
// package.json
{
"scripts":{
"security:check":"fix-react2shell-next --dry-run",
"security:fix":"fix-react2shell-next --fix"
}
}
3. 团队协作规范
- 定期运行安全检查
- 在代码审查中验证修复结果
- 及时提交修复后的依赖变更
技术细节
目录排除规则
JavaScript
constEXCLUDED_DIRS=[
'node_modules',
'.next','.turbo','.vercel','.nuxt',
'dist','build','.output',
'coverage'
];
包管理器检测
工具通过以下方式检测包管理器:
- 检查锁文件存在性(
package-lock.json,yarn.lock,pnpm-lock.yaml,bun.lockb) - 分析
package.json中的包管理器配置 - 回退到默认的 npm
安全考虑
1. 版本确定性
- 使用精确的版本号而非范围
- 避免引入新的兼容性问题
- 提供回滚机制
2. 最小权限原则
- 仅修改必要的依赖版本
- 保留其他依赖不变
- 不执行任意代码
3. 可审计性
- 清晰的变更日志
- 详细的修复报告
- 支持干运行模式
故障排除
常见问题
- 权限错误:确保有足够的文件系统权限
- 网络问题:检查包管理器的网络连接
- 版本冲突:手动解决复杂的依赖冲突
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:一个人挺好zhy 一个人挺好《fix-react2shell-next——一个命令来修复应用程序中的CVE-2025-66478》