
当像 React 这样流行的框架曝出 CVSS 10.0 的远程代码执行漏洞时,你得到的不仅仅是一份安全公告,而是整个日程表的重置。
这就是编号为 CVE-2025–55182,绰号为 React2Shell 的漏洞给正在运行 React 服务端组件和 Next.js 等框架的团队带来的冲击。React 团队已确认,React 在解码服务端函数和 RSC 的载荷时存在一个缺陷,允许攻击者在受影响的服务端上执行未经授权的远程代码。
大致情况如下:
react-server-dom-* 系列包。create-next-app 创建的默认 Next.js 应用,即使没有特殊代码,也可能被利用。如果你是开发者或技术负责人,你突然面临三个紧迫的问题:
react2shell-guard(开源仓库 gensecaihq/react2shell-scanner 内的 CLI 包)的存在就是为了以一种能直接融入开发者工作流的方式,回答所有这三个问题。
它是一个针对 React2Shell(CVE-2025–55182 / CVE-2025–66478)的开源扫描器和防护套件,能帮助你:
所有这些功能都打包在一个你可以通过 npx 运行的单一 Node.js 工具中。
开发者现在能最快做的就是运行一次本地扫描。react2shell-guard 会检查你的锁文件(npm、pnpm、yarn),并判断你是否依赖了以下存在漏洞的版本:
react-server-dom-webpackreact-server-dom-parcelreact-server-dom-turbopacknext因为它直接读取锁文件,所以不需要安装依赖,并且能很好地支持单体仓库。
在你的项目根目录下,可以运行:
npx react2shell-guard .或者指定其他路径:
npx react2shell-guard /path/to/your/app在底层,该工具:
其输出易于开发者阅读:项目名称、框架、存在漏洞的包,以及你应该升级到的确切版本,这些信息都与 React 和 Next.js 的安全指南保持一致。
发现存在漏洞的包只是战斗的一半。仍然需要有人去修复它们。
react2shell-guard 包含了一个自动修复流程,可以更新你的 package.json,甚至能为你重新安装依赖:
# 预览将发生的更改
npx react2shell-guard fix --dry-run
# 应用修复
npx react2shell-guard fix
# 应用修复并重新安装依赖
npx react2shell-guard fix --install该工具从 React 和 Next.js 的安全公告中获知了已修补的版本,例如:
所以你无需猜测,直接应用框架作者推荐的版本即可。
对于流程更规范的团队,react2shell-guard 甚至可以使用 GitHub CLI 自动开启一个 GitHub 拉取请求:
react2shell-guard create-pr --dry-run # 显示计划
react2shell-guard create-pr # 创建分支和 PR这使得将 React2Shell 修复工作集成到你用于其他所有内容的代码审查流程变得轻而易举。
即使你的代码已打补丁,旧的容器或被遗忘的服务仍有可能在运行存在漏洞的构建。
react2shell-guard 提供了两种面向运行时的检查方式:
1. 线上 URL 扫描
# 单个 URL
npx react2shell-guard scan-url https://your-app.com
# 从文件扫描多个 URL
npx react2shell-guard scan-url urls.txt --list此模式会发送精心构造的 RSC 风格请求,并查找与漏洞行为相关的响应模式,然后报告哪些端点存在风险。
2. 容器镜像扫描
# 本地或远程镜像
npx react2shell-guard scan-image myorg/app:latest它会检查镜像中是否存在有漏洞的 React/Next.js 包,支持 JSON/SARIF 格式输出,并能处理本地或存储在注册表中的镜像。
这意味着你可以:
React2Shell 虽令人痛苦,但它不会是我们在 RSC 或类似服务端 UI 技术中看到的最后一个严重漏洞。你不如将这次事件转化为一个永久的防护措施。
react2shell-guard 提供了一流的 CI 集成:
--no-exit-on-vuln)。它还支持针对 Vercel 的特定检查:
react2shell-guard vercel-check你可以将其接入 vercel.json 或你的 package.json 构建脚本中,这样当存在 React2Shell 漏洞包时,Vercel 部署甚至不会开始构建。
即使打了补丁并有 CI 检查,为可疑的 RSC 流量添加运行时检测仍然是明智之举。
该项目包含可以即插即用的中间件,适用于:
以在边缘检测并可选择性地阻止可疑的 React2Shell 风格载荷:
// Express
import express from 'express';
import { createExpressMiddleware } from 'react2shell-guard/middleware';
const app = express();
app.use(express.raw({ type: 'text/x-component' }));
app.use(express.json());
app.use(createExpressMiddleware({
action: 'block', // 'block' | 'log' | 'alert'
skipPaths: ['/health'],
onAlert: (result, req) => {
console.error('React2Shell attempt:', result);
},
}));
// Next.js middleware.ts
import { withReact2ShellGuard } from 'react2shell-guard/middleware';
export const middleware = withReact2ShellGuard({
action: 'block',
rscEndpointsOnly: true,
});
export const config = {
matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'],
};该中间件会查找诸如格式错误的模块引用、RSC 流滥用以及其他与已知利用技术匹配的特征模式。你可以选择记录、报警或直接阻止可疑请求。
除此之外,该工具还提供:
这些功能是可选的,但它们有助于大型组织将 react2shell-guard 集成到现有的安全和自动化生态系统中。
所有这些都存在于 MIT 许可的开源仓库中:https://github.com/gensecaihq/react2shell-scanner
CLI 工具以 react2shell-guard 的名称发布在 npm 上。
该项目是:
因为它是开源的,你可以审查其检测逻辑,使其适应你的环境,并随着新的 RSC/Next.js 问题出现而对其进行扩展。
如果你的技术栈涉及 React 19 或 Next.js,这里有一个简单的计划:
npx react2shell-guard .,并修复它发现的任何问题。scan-url 扫描你的公开 URL 列表和高价值内部应用。React2Shell 是个大问题,但它不必造成混乱。借助像 react2shell-guard 这样的工具,你可以将一个可怕的 RCE 事件周转变为结构化的、可重复的响应流程——并为下一次事件保留这些防护措施。FINISHED
CSD0tFqvECLokhw9aBeRqsaTeCzrD+R/tKUDM3HEHo8dhnJldJXi9fFQCe+uVQbnihYBjOAR2J3FNPixDm5VFKJBM/YyifeEKFBdLXxl5ixAQ+TzawGVz1szNCMY6J4V2GITOZMCIJc7Mhw1ffJKQ++rqtHhWPek7V/xXOmkSd8=
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。