首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >实战指南:使用 react2shell-guard 应对高危 React RCE 漏洞 (CVE-2025-55182)

实战指南:使用 react2shell-guard 应对高危 React RCE 漏洞 (CVE-2025-55182)

原创
作者头像
qife122
发布2026-02-11 06:17:21
发布2026-02-11 06:17:21
1330
举报

How react2shell-guard 为开发者提供实用的响应计划

当像 React 这样流行的框架曝出 CVSS 10.0 的远程代码执行漏洞时,你得到的不仅仅是一份安全公告,而是整个日程表的重置。

这就是编号为 CVE-2025–55182,绰号为 React2Shell 的漏洞给正在运行 React 服务端组件和 Next.js 等框架的团队带来的冲击。React 团队已确认,React 在解码服务端函数和 RSC 的载荷时存在一个缺陷,允许攻击者在受影响的服务端上执行未经授权的远程代码。

大致情况如下:

  • 该漏洞影响 React 19.x 版本中的 react-server-dom-* 系列包。
  • 那些捆绑了 RSC 的框架如 Next.js、React Router、Waku、Expo 等均受影响。
  • 大量云环境中运行着存在漏洞的 React/Next.js 实例,并且使用 create-next-app 创建的默认 Next.js 应用,即使没有特殊代码,也可能被利用。

如果你是开发者或技术负责人,你突然面临三个紧迫的问题:

  1. 我们的项目是否正在使用存在漏洞的 RSC / Next.js 版本?
  2. 我们已部署的应用现在是否就可被利用?
  3. 我们如何修复它,并防止它在六个月后再次出现?

react2shell-guard(开源仓库 gensecaihq/react2shell-scanner 内的 CLI 包)的存在就是为了以一种能直接融入开发者工作流的方式,回答所有这三个问题。

react2shell-guard 一句话是什么?

它是一个针对 React2Shell(CVE-2025–55182 / CVE-2025–66478)的开源扫描器和防护套件,能帮助你:

  • 检测代码库中的漏洞依赖
  • 检查线上 URL 和容器镜像
  • 阻止不安全的部署
  • 自动修复问题
  • 添加运行时中间件和 CI 钩子,确保同类型漏洞无法再次潜入

所有这些功能都打包在一个你可以通过 npx 运行的单一 Node.js 工具中。

步骤 1 — 定位问题:代码库与依赖扫描

开发者现在能最快做的就是运行一次本地扫描。react2shell-guard 会检查你的锁文件(npm、pnpm、yarn),并判断你是否依赖了以下存在漏洞的版本:

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack
  • 受影响的 15.x 和 16.x 范围内的 next

因为它直接读取锁文件,所以不需要安装依赖,并且能很好地支持单体仓库。

在你的项目根目录下,可以运行:

代码语言:bash
复制
npx react2shell-guard .

或者指定其他路径:

代码语言:bash
复制
npx react2shell-guard /path/to/your/app

在底层,该工具:

  • 自动检测 npm、pnpm 和 yarn 锁文件
  • 遍历单体仓库并扫描所有发现的项目
  • 检测 Next.js 等框架,并判断 App Router / RSC 是否启用

其输出易于开发者阅读:项目名称、框架、存在漏洞的包,以及你应该升级到的确切版本,这些信息都与 React 和 Next.js 的安全指南保持一致。

步骤 2 — 修复它,而不仅仅是标记

发现存在漏洞的包只是战斗的一半。仍然需要有人去修复它们。

react2shell-guard 包含了一个自动修复流程,可以更新你的 package.json,甚至能为你重新安装依赖:

代码语言:bash
复制
# 预览将发生的更改
npx react2shell-guard fix --dry-run
# 应用修复
npx react2shell-guard fix
# 应用修复并重新安装依赖
npx react2shell-guard fix --install

该工具从 React 和 Next.js 的安全公告中获知了已修补的版本,例如:

  • React RSC 包:19.0.1, 19.1.2, 19.2.1
  • Next.js:15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7

所以你无需猜测,直接应用框架作者推荐的版本即可。

对于流程更规范的团队,react2shell-guard 甚至可以使用 GitHub CLI 自动开启一个 GitHub 拉取请求:

代码语言:bash
复制
react2shell-guard create-pr --dry-run # 显示计划
react2shell-guard create-pr # 创建分支和 PR

这使得将 React2Shell 修复工作集成到你用于其他所有内容的代码审查流程变得轻而易举。

步骤 3 — 检查真实环境:线上 URL 和容器扫描

即使你的代码已打补丁,旧的容器或被遗忘的服务仍有可能在运行存在漏洞的构建。

react2shell-guard 提供了两种面向运行时的检查方式:

1. 线上 URL 扫描

代码语言:bash
复制
# 单个 URL
npx react2shell-guard scan-url https://your-app.com
# 从文件扫描多个 URL
npx react2shell-guard scan-url urls.txt --list

此模式会发送精心构造的 RSC 风格请求,并查找与漏洞行为相关的响应模式,然后报告哪些端点存在风险。

2. 容器镜像扫描

代码语言:bash
复制
# 本地或远程镜像
npx react2shell-guard scan-image myorg/app:latest

它会检查镜像中是否存在有漏洞的 React/Next.js 包,支持 JSON/SARIF 格式输出,并能处理本地或存储在注册表中的镜像。

这意味着你可以:

  • 通过 URL 扫描生产环境中正在运行的服务
  • 通过镜像标签扫描注册表中的镜像 ……而不是仅仅检查 Git 仓库中的代码。

步骤 4 — 将防护措施集成到你的 CI/CD 和托管环境

React2Shell 虽令人痛苦,但它不会是我们在 RSC 或类似服务端 UI 技术中看到的最后一个严重漏洞。你不如将这次事件转化为一个永久的防护措施。

react2shell-guard 提供了一流的 CI 集成:

  • 提供了 GitHub Actions 示例,可在每次推送或 PR 时运行,并将 SARIF 报告上传至 GitHub 的安全选项卡。
  • 当存在漏洞时,其退出码会导致构建失败。
  • 如果你想以“仅警告”模式开始,可以使用 CLI 开关 (--no-exit-on-vuln)。

它还支持针对 Vercel 的特定检查:

代码语言:bash
复制
react2shell-guard vercel-check

你可以将其接入 vercel.json 或你的 package.json 构建脚本中,这样当存在 React2Shell 漏洞包时,Vercel 部署甚至不会开始构建。

步骤 5 — 增加运行时纵深防御

即使打了补丁并有 CI 检查,为可疑的 RSC 流量添加运行时检测仍然是明智之举。

该项目包含可以即插即用的中间件,适用于:

  • Express 应用,以及
  • Next.js 中间件

以在边缘检测并可选择性地阻止可疑的 React2Shell 风格载荷:

代码语言:javascript
复制
// 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 流滥用以及其他与已知利用技术匹配的特征模式。你可以选择记录、报警或直接阻止可疑请求。

为安全和平台团队提供的额外功能

除此之外,该工具还提供:

  • 预提交钩子(Husky、Lefthook 或独立版本),防止开发者提交明显存在漏洞的包版本。
  • SBOM 扫描,用于 CycloneDX 文件,以便你可以对现有的软件物料清单运行此扫描。
  • MCP 服务器集成,将扫描作为工具暴露给兼容 MCP 的 AI 助手——如果你已经在使用智能体工作流进行代码审查或基础设施检查,这将非常理想。

这些功能是可选的,但它们有助于大型组织将 react2shell-guard 集成到现有的安全和自动化生态系统中。

开源、MIT 许可、社区友好

所有这些都存在于 MIT 许可的开源仓库中:https://github.com/gensecaihq/react2shell-scanner

CLI 工具以 react2shell-guard 的名称发布在 npm 上。

该项目是:

  • 一个扫描器和防护套件,而非利用工具包
  • 由社区驱动,提供了贡献和报告问题的指南
  • 积极寻找测试者、文档撰写者和代码贡献者

因为它是开源的,你可以审查其检测逻辑,使其适应你的环境,并随着新的 RSC/Next.js 问题出现而对其进行扩展。

如果你今天只做三件事

如果你的技术栈涉及 React 19 或 Next.js,这里有一个简单的计划:

  1. 在你的主要代码库中运行 npx react2shell-guard .,并修复它发现的任何问题。
  2. 使用 scan-url 扫描你的公开 URL 列表和高价值内部应用。
  3. 添加 GitHub Action 或 Vercel 检查,确保同类型问题不会在未被察觉的情况下再次潜入。

React2Shell 是个大问题,但它不必造成混乱。借助像 react2shell-guard 这样的工具,你可以将一个可怕的 RCE 事件周转变为结构化的、可重复的响应流程——并为下一次事件保留这些防护措施。FINISHED

CSD0tFqvECLokhw9aBeRqsaTeCzrD+R/tKUDM3HEHo8dhnJldJXi9fFQCe+uVQbnihYBjOAR2J3FNPixDm5VFKJBM/YyifeEKFBdLXxl5ixAQ+TzawGVz1szNCMY6J4V2GITOZMCIJc7Mhw1ffJKQ++rqtHhWPek7V/xXOmkSd8=

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • How react2shell-guard 为开发者提供实用的响应计划
    • react2shell-guard 一句话是什么?
    • 步骤 1 — 定位问题:代码库与依赖扫描
    • 步骤 2 — 修复它,而不仅仅是标记
    • 步骤 3 — 检查真实环境:线上 URL 和容器扫描
    • 步骤 4 — 将防护措施集成到你的 CI/CD 和托管环境
    • 步骤 5 — 增加运行时纵深防御
    • 为安全和平台团队提供的额外功能
    • 开源、MIT 许可、社区友好
    • 如果你今天只做三件事
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档