首页
社区
课程
招聘
漏洞预警 | React/Next.js组件RCE漏洞(CVE-2025-55182)详情分析-【附验证环境】
发表于: 2025-12-5 14:45 1019

漏洞预警 | React/Next.js组件RCE漏洞(CVE-2025-55182)详情分析-【附验证环境】

2025-12-5 14:45
1019

一、漏洞背景



    近日,React 核心团队确认了一个存在于 React Server Components (RSC) 实现中的严重远程代码执行 (RCE) 漏洞。该漏洞被分配了 CVE-2025-55182(Next.js 对应编号 CVE-2025-66478),攻击者无需任何身份验证,仅通过一个 HTTP 请求,即可在你的服务器上执行任意代码。


该漏洞烽火台实验室日前已做了相关预警:

    57bK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0M7q4)9J5k6i4N6W2K9i4S2A6L8W2)9J5k6i4q4I4i4K6u0W2j5$3!0E0i4K6u0r3M7#2)9J5c8X3c8B7K9h3u0p5k6s2g2t1x3$3u0D9N6g2k6j5d9p5c8e0e0p5q4K6f1$3M7`.


    二、官方公告



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


      ad4K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5k6h3q4U0N6q4)9J5k6h3c8W2N6W2)9J5c8X3u0D9L8$3N6Q4x3V1j5J5x3o6t1#2i4K6u0r3x3e0u0Q4x3V1j5H3x3#2)9J5c8X3y4J5K9i4c8A6j5$3q4D9i4K6u0V1M7$3g2U0N6i4u0A6N6s2W2Q4x3X3c8$3N6h3I4F1k6i4u0S2j5X3W2D9K9i4c8&6i4K6u0V1K9h3&6Q4x3X3c8J5k6h3q4U0N6q4)9J5k6s2y4W2M7Y4k6W2M7W2)9J5k6r3y4G2L8i4m8G2L8X3g2F1N6s2x3`.


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


        5fcK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5k6h3q4U0N6o6u0K6K9r3g2D9L8q4)9J5k6h3y4G2L8b7`.`.



        三、详情分析


        对源码进行分析,在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上提供了该漏洞的验证环境,访问第一个镜像。


          c12K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2V1k6s2m8G2j5#2)9J5k6h3y4G2L8g2)9J5c8Y4k6#2L8r3g2F1N6W2)9J5k6h3S2@1L8h3H3`.


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



          五、漏洞验证


          原文链接


          [培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

          收藏
          免费 0
          支持
          分享
          最新回复 (0)
          游客
          登录 | 注册 方可回帖
          返回