CVE-2025-55182(React Server Components 漏洞)能在服务器根目录创建 .sh、.gz 或 XMRig 矿工文件吗?

发布: (2025年12月8日 GMT+8 20:47)
10 min read
原文: Dev.to

Source: Dev.to

问题

我在使用 React Server Components 的 Next.js 项目中,后端是 Magento 2。

最近服务器被入侵,我在根目录发现了一些可疑文件,包括:

  • .sh 脚本
  • .gz.tar.gz 压缩包
  • XMRig 挖矿二进制文件
  • 自动重启脚本

在调查过程中,我看到了 CVE‑2025‑55182,它影响 React Server Components 并允许泄露某些内部组件的源代码。

我的主要疑问是:

  • CVE‑2025‑55182 或其他 React Server Component 漏洞是否可能让攻击者:
    • 向服务器文件系统写入文件,
    • 上传 .sh.gz 文件,
    • 执行 shell 脚本,
    • 或部署像 XMRig 这样的二进制文件?

或者该漏洞仅限于泄露组件代码,无法导致远程代码执行或文件创建,意味着服务器被攻破的原因必然是其他来源(例如 Magento 漏洞、SSH 被盗、权限配置错误等)?

我想确认 CVE 是否可能导致文件系统层面的更改,还是应该在其他地方寻找根本原因。

回答

简短结论:CVE‑2025‑55182 只会导致 组件源码泄露,它本身 不具备写文件、上传文件、执行脚本或部署二进制文件 的能力。若攻击者利用该漏洞取得了源码,他们仍然需要另外的漏洞或错误配置才能实现远程代码执行(RCE)或文件写入。因此,服务器上出现的 .sh.gz、XMRig 等文件,极有可能来源于 其他攻击向量(如 Magento 漏洞、SSH 暴力破解、误配置的 CI/CD、第三方依赖的后门等)。

下面从技术层面解释原因:

1. CVE‑2025‑55182 的本质

  • 漏洞描述:在 React Server Components(RSC)实现中,服务器端会把组件的 序列化描述moduleIdexportNameprops 等)发送给客户端。若组件内部使用了 import.meta.url__filename__dirname 或者直接把文件内容作为字符串返回,攻击者可以构造请求,使服务器错误地把这些内部路径或源码作为响应返回,从而泄露源码。
  • 攻击面:攻击者只能 读取 服务器端的文件内容(主要是组件源码、配置文件等),并不能在服务器上执行写入或执行操作。

2. 为什么它不能直接写文件或执行代码

关键点说明
RSC 运行模型RSC 只在服务器上执行一次,用来生成 JSONReact 元素树,随后把结果序列化返回给客户端。它没有提供直接的文件系统 API(如 fs.writeFile)给组件使用,除非开发者自行在组件内部引入并调用。
渲染过程的隔离Next.js 对 RSC 的渲染过程进行严格的 sandbox(沙箱)处理,默认不允许访问 process.envprocess.cwd() 之外的路径,也不允许执行任意子进程。
漏洞触发方式CVE‑2025‑55182 通过 错误的序列化/反序列化 让攻击者看到源码,并不涉及 evalFunctionchild_process.exec 等可执行代码的路径。
文件写入需求要在服务器上创建 .sh.gz、二进制等文件,需要 调用文件系统写入 APIfs.writeFilefs.createWriteStream)或 执行系统命令execspawn)。这些 API 在 RSC 中默认不可达。

因此,仅凭 CVE‑2025‑55182,攻击者只能窃取信息,而无法直接在服务器上写文件或执行任意代码。

3. 可能的间接风险

虽然 CVE‑2025‑55182 本身不提供 RCE,但泄露的源码可能帮助攻击者:

  1. 发现其他漏洞:源码中可能包含硬编码的凭证、错误的输入验证、未加密的 API 密钥等,攻击者可以利用这些信息进一步渗透。
  2. 定位业务逻辑:了解内部实现后,攻击者可以针对特定业务接口发起更精准的攻击(如 SSRF、SQL 注入等)。
  3. 利用已知的 Next.js/Magento 漏洞:如果项目中还有未打补丁的旧版依赖,泄露的源码可能让攻击者更快找到利用点。

但这些都是二次利用,仍然需要 另一个可执行的漏洞 才能实现文件写入或二进制执行。

4. 为什么你的服务器会出现 XMRig、.sh.gz 等文件

以下是更常见的导致此类文件出现的原因,建议逐一排查:

  1. Magento 2 漏洞

    • Magento 过去多次曝出远程代码执行(RCE)漏洞(如 CVE‑2023‑XXXX、CVE‑2024‑XXXXX),攻击者可通过上传恶意 PHP 脚本后执行系统命令。
    • 检查 Magento 版本、已安装的插件以及是否已应用官方安全补丁。
  2. SSH/凭证泄露

    • 弱密码、公开的私钥、或通过暴力破解获取的登录凭证。
    • 查看 /var/log/auth.log(或对应系统日志)中是否有异常登录记录。
  3. CI/CD 或部署脚本泄露

    • 自动化部署工具(GitHub Actions、GitLab CI、Jenkins 等)如果使用了不安全的环境变量或脚本,攻击者可能利用它们写入文件。
    • 检查 CI 日志、环境变量以及部署机器的权限。
  4. 容器/虚拟化逃逸

    • 若你在 Docker/Kubernetes 中运行 Next.js,容器逃逸漏洞(如 CVE‑2024‑XXXX)也可能导致宿主机文件写入。
  5. 第三方依赖后门

    • 某些 NPM 包可能包含恶意代码,尤其是未审计的私有包或被篡改的包。
    • 使用 npm audityarn audit,并对 package-lock.json/yarn.lock 进行完整性校验。
  6. Web 服务器配置错误

    • 例如允许任意文件上传且未做文件类型或路径校验,攻击者可以直接上传 .sh.gz 并通过 cron 或 systemd 定时任务执行。

5. 检查与缓解措施

步骤具体操作
确认是否真的受 CVE‑2025‑55182 影响查看项目中使用的 nextreactreact-server-dom-webpack 版本。该 CVE 影响的版本范围通常是 React 19.x 之前的某些实现。若已升级到最新的 Next.js(>=13.5)和 React(>=19.0.0),漏洞已被修复。
审计服务器日志- npm/yarn 安装日志
- Web 服务器访问日志(nginx/Apache)
- Magento 日志(var/log/
- 系统审计日志(/var/log/syslog/var/log/auth.log
检查异常文件的创建时间、所有者、权限使用 ls -l --time=ctimestat 查看文件元数据,判断是哪个用户创建的。
回滚或重新部署干净的代码若无法确认文件来源,建议在干净的机器上重新构建镜像或代码库,确保没有被植入后门。
强化 SSH 与凭证管理- 禁止密码登录,使用强密码的 SSH 密钥
- 启用 2FA、Fail2Ban
- 定期更换密钥
更新所有依赖- npm install react@latest react-dom@latest next@latest
- composer update(Magento)
- npm audit fix --force(审计)
限制文件系统写权限- 将 Next.js 运行用户限制为只能写入特定目录(如 /tmp
- Magento 只允许 var/pub/ 可写
监控异常进程使用 ps aux, top, htop 检查是否有未知的 xmrig 进程在运行。

6. 小结

  • CVE‑2025‑55182 本身只能泄露源码,不提供写文件、执行脚本或部署二进制的能力。
  • 若攻击者仅利用该漏洞,他们只能获取内部实现细节,仍需 其他漏洞(如 Magento RCE、SSH 失窃、CI/CD 漏洞等)才能实现你所看到的文件写入和 XMRig 部署。
  • 因此,应把调查重点放在后端 Magento、服务器登录凭证、部署流水线以及可能的第三方依赖,而不是仅仅关注 React Server Components 的 CVE。

通过上述检查与加固,你可以更准确地定位根本原因,并防止类似的后续入侵。祝排查顺利。

Back to Blog

相关文章

阅读更多 »

当现实瓦解时

2024年12月,Fei‑Fei Li 在满座的斯坦福礼堂里举起一张破旧的明信片——梵高的《星夜》,因年代久远而褪色并出现折痕。她把它……

你知道吗?(第3部分)

Google Cloud Shell 您可以将 Google Cloud Shell 用作编码环境!它提供了大量针对 JavaScript、.NET 等的工具。最棒的是,您可以安装……