news 2026/4/23 11:26:33

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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智能小助手)
    对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 13:02:01

机器学习西瓜书编程作业(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

机器学习西瓜书编程作业(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码 包含代码和报告。报告中包含题目如下: 1.采用留出法实现对率回归,给出西瓜数据集3.0a的性能评估结果。 2.实现基于信息增益(ID3)和信息增益率…

作者头像 李华
网站建设 2026/4/22 22:12:19

对话式AI:端到端语音识别与算法公平性研究进展

2022年,语音领域规模最大、最全面的国际学术会议Interspeech在韩国仁川举行。某中心作为白金赞助商出席。某中心语音AI组织的几位资深科学家重点介绍了该机构在本次会议上贡献的研究,本文聚焦于语音科学方面的进展,围绕近期语音AI研究的两个核…

作者头像 李华
网站建设 2026/4/23 10:12:32

第九课实战版:异常与日志体系 —— 后端稳定性的第一道防线

第9课的目标,从来不是教你“写几个异常类”。而是:在你的后端工程中,亲手搭建一套 👉 可扩展、可定位、可治理的稳定性底座。从这一课开始,你写的不再只是功能代码, 而是在搭一套系统工程能力。如果用 Andr…

作者头像 李华
网站建设 2026/4/23 10:12:22

2026年数字人大管理新趋势:专业平台如何引领变革?

随着数字政府建设加速推进,人大工作的数字化转型已从"可选项"变为"必答题"。据行业调研机构预测,到2026年,全国超过85%的省级人大将完成核心业务系统的数字化重构,而专业化的数字人大管理平台将成为这场变革的…

作者头像 李华
网站建设 2026/4/23 11:21:47

全网最全继续教育一键生成论文工具TOP9:9款深度测评与推荐

全网最全继续教育一键生成论文工具TOP9:9款深度测评与推荐 2026年继续教育论文工具测评:为何选择这些工具? 在当前继续教育日益普及的背景下,越来越多的学习者需要撰写高质量的学术论文。然而,从选题、资料收集到写作…

作者头像 李华
网站建设 2026/4/18 9:59:13

月底提醒:PDF 发票合并整理别拖到下月

月底这几天,很多人会突然想起一件事: 发票,好像还没整理。 月底一忙,这件事很容易被往后拖: “反正还没到报税节点,下个月再说。” 月底不整理,月初一定被追 👉 发票在&#xff0…

作者头像 李华