
当一个像React这样流行的框架爆出CVSS 10.0分级的远程代码执行漏洞时,你得到的不仅是一份安全公告,更是一场日程表的彻底重置。
这正是CVE-2025-55182(绰号React2Shell)对运行React服务器组件和Next.js等框架的团队造成的现状。React团队已确认,在处理服务器函数和RSC的解码逻辑中存在一个缺陷,允许攻击者在受影响的服务器上执行未经授权的远程代码。
漏洞的大致情况如下:
react-server-dom-*系列包。create-next-app创建的默认Next.js应用无需任何特殊代码即可被利用。如果你是一名开发者或技术负责人,你将突然面临三个紧迫问题:
react2shell-guard(开源仓库gensecaihq/react2shell-scanner内的CLI工具包)的存在,正是为了以一种能直接融入开发者工作流的方式回答所有这三个问题。
用一句话概括react2shell-guard是什么?
它是一个针对React2Shell的开源扫描器与防护套件,能帮助你:
所有这些功能都打包成一个可通过npx运行的单一Node.js工具。
第一步 —— 发现问题:仓库与依赖扫描
开发者现在最快能做的就是运行本地扫描。react2shell-guard会检查你的锁文件(npm、pnpm、yarn),判断你是否依赖了以下软件包的易受攻击版本:
react-server-dom-webpackreact-server-dom-parcelreact-server-dom-turbopack由于它直接读取锁文件,因此无需安装依赖,并且在monorepo中也能很好地工作。
从你的项目根目录,你可以运行:
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自动创建拉取请求:
`react2shell-guard create-pr --dry-run # 显示计划
react2shell-guard create-pr # 创建分支 + PR`
这使得将React2Shell修复工作无缝插入你用于其他所有事情的代码审查流水线变得轻而易举。
第三步 —— 检查现实世界:在线URL与容器扫描
即使你的代码已打补丁,旧容器或被遗忘的服务仍有可能在运行存在漏洞的构建。react2shell-guard通过两种方式提供面向运行时的检查:
# 单个URL
npx react2shell-guard scan-url[https://your-app.com](https://your-app.com)从文件读取多个URLnpx react2shell-guard scan-url urls.txt --list
此模式会发送精心构造的RSC风格请求,并查找与易受攻击行为相关的响应模式,然后报告哪些端点存在风险。这意味着你可以:
第四步 —— 在CI/CD和托管环境中设置防护栏
React2Shell很棘手,但它不会是我们在RSC或类似服务器端UI技术中看到的最后一个严重漏洞。你或许应该将这次事件转化为一道永久的防护栏。
react2shell-guard提供一流的CI集成:
--no-exit-on-vuln)它还支持针对Vercel的特定检查:
react2shell-guard vercel-check
你可以将其集成到vercel.json或你的package.json构建脚本中,这样当存在React2Shell漏洞包时,Vercel部署甚至不会开始构建。
第五步 —— 添加运行时纵深防御
即使打了补丁并进行了CI检查,为可疑的RSC流量添加运行时检测也是明智之举。
该项目包含可即插即用的中间件,适用于:
// 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许可、社区友好
所有这一切都在MIT许可的开源仓库中:https://github.com/gensecaihq/react2shell-scanner
CLI工具在npm上以react2shell-guard发布。
该项目是:
由于它是开源的,你可以审计其检测逻辑,使其适应你的环境,并在新的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 删除。