漏洞预警 | ReactNext.js组件RCE漏洞(CVE-2025-55182)详情分析-【附验证环境】
好的,我现在需要帮用户总结一篇文章的内容,控制在100字以内。用户提供的文章内容主要关于React Server Components中的一个严重漏洞,CVE-2025-55182。漏洞允许攻击者通过HTTP请求执行任意代码,无需身份验证。 首先,我得理解文章的结构。文章分为几个部分:漏洞背景、官方公告、详情分析、漏洞验证环境和漏洞验证。每个部分都详细描述了漏洞的情况、影响以及如何利用。 接下来,我需要提取关键信息。漏洞名称是CVE-2025-55182,属于React Server Components。攻击者可以通过HTTP请求远程执行代码,无需认证。官方已经发布了公告,并且有研究人员报告了这个漏洞。 然后,分析部分提到了具体的代码实现和绕过机制,但用户只需要总结,所以这部分可以简化为技术细节绕过了安全限制。 最后,文章还提到了验证环境和相关链接,但这些可能不需要包含在总结中。 现在,我需要把这些信息浓缩到100字以内。要确保包括:React Server Components的严重RCE漏洞、CVE编号、无需认证的HTTP请求、技术细节绕过限制以及官方公告和研究人员的信息。 可能的结构是:React Server Components存在严重RCE漏洞(CVE编号),允许攻击者通过HTTP请求执行任意代码,无需认证。技术细节显示绕过了安全限制。官方已发布公告,并由研究人员报告。 检查字数是否在限制内,并调整用词使其简洁明了。 </think> React Server Components 存在严重远程代码执行 (RCE) 漏洞(CVE-2025-55182),攻击者可通过 HTTP 请求在服务器上执行任意代码。该漏洞由 Lachlan Davidson 报告,技术细节显示可绕过 serverManifest 的限制。官方已发布公告并提供修复建议。 2025-12-5 06:29:36 Author: www.freebuf.com(查看原文) 阅读量:7 收藏

一、漏洞背景

近日,React 核心团队确认了一个存在于 React Server Components (RSC) 实现中的严重远程代码执行 (RCE) 漏洞。该漏洞被分配了 CVE-2025-55182(Next.js 对应编号 CVE-2025-66478),攻击者无需任何身份验证,仅通过一个 HTTP 请求,即可在你的服务器上执行任意代码。
该漏洞烽火台实验室日前已做了相关预警:
https://mp.weixin.qq.com/s/djibDduH3bluVXHDSLAsSg

二、官方公告

官方公告中提到,该漏洞由Lachlan Davidson 在Lachlan Davidson11 月 29 日 进行报告:

https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components

在作者的github中,也贴了这样一个链接,说明了该漏洞的局限性。
https://react2shell.com

三、详情分析

对源码进行分析,在server.js中,当请求/formaction会进入如下:

注释很明显,主要关注decodeAction函数,decodeAction函数的实现位于node_modules/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js中,接收body和serverManifest。当表单名以$ACTION_REF_123 开头,则截取$ACTION_REF_123 中的123,然后重新拼接为$ACTION_123: 作为value,然后将body、serverManifest、value作为参数调用decodeBoundActionMetaData方法。
进入到decodeBoundActionMetaData方法中,会获取所有以$ACTION_123:开头的表单项;
然后调用getChunk(body, 0) 获取表单名称为$ACTION_123:0 的内容;
随后会用serverManifest,value.id,value.bound作为参数调用loadServerReference函数,根据serverManifest找到对应函数,预加载模块,然后把它封装成一个真正可调用的 JS 函数,绑定参数。
在resolveServerReference 中,先通过id在manifest 中获取resolvedModuleData,再拿到保存的name,也就是通过模块名拿到resolvedModuleData,然后再调用resolvedModuleData.name去拿函数名进行返回;如果没获取到则会通过#进行切割id,#前作为模块名,#后则作为函数名进行返回。
随后调用preloadModule,在moduleExports中,保存该模块的所有函数,可以通过resolveServerReference 中处理后得到的函数名来获取进行返回,而函数名我们可以通过fs#writeFileSync来指定绕过manifest 中的限制来调用其他函数。
总结一下,这个漏洞实际上是绕过serverManifest中的对某个模块的特定方法的调用,如该项目中指定了fs的readFileSync方法可以调用,实际上可传入fs#writeFileSync来调用其他方法。

四、漏洞验证环境

Ddpoc上提供了该漏洞的验证环境,访问第一个镜像。
https://www.ddpoc.com/vulenv.html

点击启用,生成一个容器环境(15分钟内自动销毁)

五、漏洞验证

# 漏洞分析

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/vuls/460628.html
如有侵权请联系:admin#unsafe.sh