当前位置: 首页 > news >正文

React服务器组件(RSC)协议中的严重漏洞CVE-2025-55182深度解析

React服务器组件(RSC)协议中的严重漏洞CVE-2025-55182

仓库概述

我创建这篇博客是因为没有找到任何向真正了解React但无法理解此问题的初学者解释该漏洞的博客。本文纯粹用于教育目的。

此问题的根源在于Next.js中React服务器函数处理客户端与服务器之间数据块的方式存在安全缺陷。以下是逐步概述以及数据块如何涉及:

1. React服务器函数中的数据处理背景

React服务器函数充当客户端和服务器之间的通信桥梁,使客户端能够向服务器发送数据请求。对这些请求的响应使用所谓的React Flight协议,其中数据块被传输到服务器进行反序列化。

数据块:这些是在客户端和服务器之间传递的小块数据。数据块可以相互引用,这种引用告诉服务器如何高效处理复杂数据。

为什么React Flight协议很重要?

服务器组件允许React应用程序将某些操作卸载到服务器。Flight协议通过定义数据如何在客户端和服务器之间编码、传输和解码来实现这一点。

关键特性:

  • 基于块的序列化:数据以块的形式传递,这些块可以相互引用并包含嵌套数据结构。
  • 紧凑格式:针对低延迟进行了优化,减少了通过网络传输的数据量。
  • 客户端-服务器互操作:客户端发送数据请求,服务器使用表示React组件或数据的序列化块进行响应。

React Flight协议的优势

  • 效率:紧凑的序列化实现了快速的服务器到客户端通信。
  • 流式传输:由于数据以块的形式传输,浏览器可以在初始块到达后立即开始渲染。
  • 引用支持:得益于块引用(如$1、$2),React Flight可以传递复杂的树状结构而无需重复数据。

Press enter or click to view image in full size

CVE-2025-55182中利用的弱点

在CVE-2025–55182的背景下,Flight协议存在一个漏洞:

它在反序列化过程中没有充分验证块引用

这使得攻击者可以制作恶意块来访问敏感的JavaScript对象(包括对象的原型),并执行任意代码。

例如,如果块0是:

{"then":"$1:__proto__:constructor:constructor"}

这将导致服务器调用构造函数,从而导致任意代码执行。

2. 反序列化如何发生

以下是发送到服务器的示例有效载荷:

files={"0":(None,'["$1"]'),"1":(None,'{"object":"fruit","name":"$2:fruitName"}'),"2":(None,'{"fruitName":"cherry"}'),}
  • 文件0引用$1(块1)。
  • 文件1引用$2:fruitName(块2中的水果名称)。
  • 文件2提供实际值:{“fruitName”:“cherry”}。

当服务器处理这些块时,它们会组合成类似这样的内容:

{object:"fruit",name:"cherry"}

3. 漏洞利用是什么?

该漏洞的核心是React在尝试访问键(如fruitName)之前没有验证该键是否实际存在。这个疏忽允许攻击者访问敏感的JavaScript对象,如对象原型,其中包含危险的方法。

攻击者使用特殊格式的数据块有效载荷来绕过安全性并侵入性地访问服务器。

以下是恶意有效载荷:

files={"0":(None,'["$1:__proto__:constructor:constructor"]'),"1":(None,'{"x": 1}'),}

这在服务器上转换为以下对象:

[Function:Function]

发生了什么?

  • __proto__路径访问对象原型。
  • 原型上的constructor检索构造函数。
  • 再次附加constructor会创建函数构造函数!

在此阶段,攻击者可以访问允许执行任意JavaScript代码的工具(Function)。

4. 触发任意代码执行

然后,攻击者可以确保恶意块的数据以服务器将其作为"可then对象"(类似Promise的对象)调用的方式返回。以下是实现此目的的有效载荷:

files={"0":(None,'{"then":"$1:__proto__:constructor:constructor"}'),"1":(None,'{"x":1}'),}

这在服务器上创建一个"可then对象"(类似Promise的对象):

function() { [native code] }

5. 组合实现远程代码执行(RCE)

攻击者使用可then方法,通过"调用小工具"来执行自己制作的JavaScript代码。具体来说:

  1. 他们以重新评估自身的方式制作块(称为"虚假块")。
  2. 用恶意代码替换then处理程序。
  3. 服务器最终"等待"返回的恶意代码并执行它。

以下是最终制作的有效载荷:

files={"0":(None,'{"then":"$1:__proto__:then","status":"resolved_model"}'),"1":(None,'"$@0"'),}

在此示例中:

  • then被覆盖。
  • "resolved_model"触发另一个评估周期(反序列化)。
  • 攻击者覆盖服务器的函数,并使用调用小工具来推送自己的远程代码执行有效载荷。

6. 代码修复

通过添加确保接收的数据无法访问原型的检查来修补该漏洞。具体来说:

if(hasOwnProperty.call(moduleExports,metadata.NAME)){returnmoduleExports[metadata.NAME];}returnundefined;

这确保仅访问显式对象属性,阻止原型污染。

漏洞成功利用的原因

  1. 松散的验证:React的flight协议在检索值之前没有验证键是否存在。这允许滥用__proto__和constructor。
  2. Promise(then方法):使用"可then对象"使得将恶意代码链接到看似有效的服务器流程变得容易。
  3. 动态评估:服务器的代码动态解析和处理对象。这被利用来运行任意代码。
    CSD0tFqvECLokhw9aBeRqgogYUG9/yr4cbJrLtRx1UHTPT620wqVETV/UVJ80k4HJPZ15Uv3YXxcJ7YeWV+Blx9a0pGuxC3mT+zErVuZUztYcmoaGjBeAn5lsEw/gNdOsq3M2WEAJjKdTtaP4aaHeA==
    更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
    对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
http://www.jsqmd.com/news/312453/

相关文章:

  • 2026年天津继承律师联系电话推荐:专业榜单与联系指引
  • 深度测评2026本科生必用AI论文工具TOP10
  • 2026年天津继承诉讼律所联系电话推荐:五大律所实力盘点
  • 2026年天津继承诉讼律所联系电话推荐:权威榜单与联系指引
  • 2026年天津离婚财产纠纷律师联系电话推荐:专业律师榜单解析
  • 2026扩香机市场洞察:哪些品牌扩香技术领先?香薰纸片/立式香薰/天然植物精油香氛/精油香薰机,扩香机ODM工厂有哪些
  • 2026年1月中国门窗十大品牌推荐(权威排行榜)
  • 2026年打圈机厂家推荐榜:数控打圈机、空心管打圈机、螺旋打圈机、钢带打圈机、方向盘打圈机、伺服打圈机、液压打圈机厂家推荐,助力制造业高效升级
  • 西安本地专业给宝宝起名的公司推荐
  • Flutter 三端应用实战:OpenHarmony 简易文本首字母提取器开发指南
  • 2026年长沙留学中介资质正规排名,权威解析与选择建议
  • java动态渲染列导出以及分页列表
  • 合肥留学中介如何选?口碑排名助你找资质正规机构
  • 济南硕士留学中介,最好的机构零差评服务体验分享
  • 探索南京留学中介前十,录取率高的原因?2026年留学申请参考
  • 长沙研究生留学机构前十有哪些?好评多机构选择详解
  • 郑州地区硕士留学中介前十排名,值得信赖机构详细推荐
  • 【Flutter × OpenHarmony】打造完全自定义弹窗示例卡片的跨端实现
  • Flink TaskManager 内存配置从“总量”到“组件”,把资源用在刀刃上
  • Flink JobManager 内存配置指南别让“控制面”先 OOM
  • 从 Flutter 到 OpenHarmony:实现底部弹窗的跨端实践
  • 零基础吃透Linux内核核心配置文件(Kconfig/.config/defconfig)
  • 探寻U型丝预埋件优选:2026年国内厂家精选,钢板止水带/不锈钢止水钢板/穿墙螺丝/脚手架,u型丝预埋件公司哪家好
  • 2026年天津协议离婚律师联系电话推荐:五大优选律师榜单
  • 2026年天津离婚股权分割律师联系电话推荐:专业榜单与联系指引
  • 2026年超声波焊接机厂家推荐排行榜:数字/全自动/塑料/金属/高精密/多头/多功能/小型/手持式点焊机,专业解析与选购指南
  • 2026年天津遗产纠纷律师联系电话推荐:专业团队联系指南
  • 工业PoE交换机:工业多元设备连接与远距离传输的可靠保障
  • 2026年天津离婚股权分割律师联系电话推荐:权威榜单及服务详解
  • 2026年天津继承诉讼律师联系电话推荐:权威榜单与联系指南