news 2026/6/15 18:27:17

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/6/15 15:33:43

王耀恒:一位专业权威GEO优化讲师的深度阐述

在信息混乱成为常态的领域,真正的专业是能够定义问题本质并指明清晰路径的能力。“你的GEO代运营,可能正在污染你的数字信用资产。”当这句话在行业内首次被系统性提出时,许多人第一次意识到,自己在AI时代做的所谓“优化”&#x…

作者头像 李华
网站建设 2026/6/15 15:52:43

工业PoE交换机:工业多元设备连接与远距离传输的可靠保障

工业PoE交换机具备强大的设备连接能力,能够轻松实现多台服务器、中继器、集线器以及终端设备之间的互联互通。无论是大型企业复杂的数据中心,还是工业现场种类繁多、分布分散的设备,该交换机都能构建起一个稳定且高效的网络架构。 更为突出的…

作者头像 李华
网站建设 2026/6/15 15:59:42

DeepSeek-OCR 2再进化,对图像理解已经像人一样逻辑推理了

25年10月DeepSeek-OCR发布,用视觉大幅压缩文本,“1张图片装10页书的信息!DeepSeek-OCR用图片压缩文本,一图胜千言被实现了”,震惊了整个科技圈。 刚刚,DeepSeek-OCR 2再升级,保持了前代DeepSee…

作者头像 李华
网站建设 2026/6/15 12:13:00

Coherent 与 Quside 演示基于 VCSEL 的熵源

专注于大规模制造解决方案,以支持广泛应用场景下下一代安全架构的光子学公司 Coherent 与量子技术公司 Quside 共同宣称,他们于基于硬件的安全领域斩获一项重大里程碑式成果——成功演示了一种具备大规模制造潜力的量子熵源。此解决方案依托 Coherent 的…

作者头像 李华
网站建设 2026/6/15 12:14:07

深度测评!本科生论文痛点TOP9 AI论文软件全解析

深度测评!本科生论文痛点TOP9 AI论文软件全解析 2026年本科生论文写作工具测评:为何需要一份权威榜单? 随着AI技术的不断进步,越来越多的本科生开始依赖AI论文软件来提升写作效率、优化内容结构。然而,面对市场上五花八…

作者头像 李华