我如何检测并阻止对我的 Next.js 应用的真实世界 RCE 攻击(CVE-2025-55182 / React2Shell)
Source: Dev.to

上周,我经历了在构建 Web 应用过程中最让人警醒的安全事件之一。
我的生产环境 Next.js 应用正被攻击者主动针对 远程代码执行(RCE),根本原因是 React Server Components 中新披露的漏洞。
本文将介绍发生了什么、我如何诊断问题、如何修补以及我为加固基础设施所采取的措施。
1) 首次警示:容器中的可疑日志
一切始于我在检查 Docker 容器时注意到的异常日志:
/bin/sh: curl: not found
/base64 -d | bash
ping: bad address
cat: can't open '.env.production'
攻击者的行为包括:
- 尝试下载恶意脚本
- 试图导出环境变量
- 向
/tmp投放文件 - 执行侦察命令
- 注入 base64 编码的负载
此时,文件系统中没有任何持久化内容,容器重启后也没有残留恶意二进制文件——这算是个好兆头,但显然有人在我的应用内部尝试执行 shell 命令。
2) 调查根本原因
我的第一反应是检查自己的服务端代码:
- 审查所有路由处理函数
- 检查每个 Server Action
- 扫描代码库中是否出现
child_process.exec、spawn或 CLI 包装器
我的代码并未执行任何 shell 命令,于是我转向下一个最可能的嫌疑:框架层面的漏洞。
作案者:CVE‑2025‑55182(React2Shell)
我的应用运行的 Next.js 版本使用了受漏洞影响的 React Server Components 构建,具体受影响的版本见 CVE‑2025‑55182 – React2Shell。
该漏洞是一种无需认证的 RCE,源于 React 的 RSC/Flight 协议中不安全的反序列化。攻击者只需发送一个精心构造的 HTTP 请求,即可在 Node.js 服务器内部触发任意代码执行,即使没有自定义的 API 端点。
我对我的运行实例使用了公开的 PoC… 结果成功了。所有线索瞬间拼合。
3) 修复漏洞
React 团队发布了补丁,Next.js 提供了官方工具用于升级受影响的包。
npx fix-react2shell-next
执行该命令后更新了:
- React RSC 内部实现
- 依赖该脆弱代码路径的 Next.js 内部
我使用干净的 Docker 镜像重新构建并部署了应用。随后再次测试 PoC:利用失败。彻底失败。 问题已解决。

在受影响的 Next.js 应用上运行 npx fix-react2shell-next – 确认活跃漏洞并应用官方补丁。
4) 加固我的基础设施(这救了我)
虽然漏洞存在,但攻击者从未获得持久化或提升到宿主机的权限。原因在于我们硬化的 Docker 环境:
- 根文件系统只读
/tmp挂载了noexec- 所有 Linux 能力均已移除
- 启用了
no-new-privileges - 容器内未安装
bash或curl - 可写目录被隔离
- Nginx 进行速率限制和反向代理过滤
这些层级阻止了文件执行、脚本下载、持久化安装、定时任务修改、特权提升以及写入隔离卷之外的路径。最终,漏洞虽然允许 RCE,但环境阻止了它演变为完整的妥协。
5) 事后行动
修补完毕后,我还:
- 轮换了所有环境密钥
- 使用干净镜像重新部署全部服务
- 验证未残留恶意文件
- 审查日志以确认攻击尝试已被拦截
因为正如我们常说的,安全不仅是修复单一问题,而是一个持续的过程。
6) 开发者的关键要点
- 快速打补丁 – React2Shell 已在野外被主动利用。如果你的应用使用 Next.js + RSC,请立即更新。
- 最小特权拯救生命 – 只读根文件系统即可阻断约 80% 的真实攻击链。
- 别指望自己的代码完美 – 框架漏洞会出现,攻击者动作快。
- 采用多层防御 – 单一措施并未阻止本次攻击,组合才起效。
- 全方位监控 – 日志在危机到来之前揭示了攻击痕迹。
7) 结论
这次经历既紧张又极具教育意义。此类事件可能发生在任何人身上,每个受害者背后都有自己的故事。它再次提醒我们:保持更新、加固运行时环境、假设漏洞必然出现,并为基础设施做好安全防护是多么重要。
如果有哪怕一个人阅读后去修补应用或提升安全配置,那么写这篇文章就已经值得。
参考资料
- CVE‑2025‑55182 – React2Shell 分析:https://www.trendmicro.com/en_us/research/25/l/CVE-2025-55182-analysis-poc-itw.html
- React 安全公告:https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
- 官方修复工具:
npx fix-react2shell-next