React2Shell 内部解析

发布日期:2026-04-24 10:01:17   浏览量 :0
发布日期:2026-04-24 10:01:17  
0

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

本文的土耳其语版本最初发布于 blog.arasmehmet.com

免责声明:这是对已公开披露且自披露以来已修补的通用漏洞披露(CVE)的回顾性分析。所讨论的所有利用机制均为概念性的;此处没有任何内容是可实际运作的利用代码。

2025年12月3日。React 安全公告发布了 CVE-2025-55182,昵称为 React2Shell。其通用漏洞评分系统(CVSS)得分为 10.0,即最高可能的严重程度。通过一个精心构造的超文本传输协议(HTTP)请求,无需身份验证,即可在任何运行 React 服务器组件的应用程序上执行任意代码。

拉克兰·戴维森(Lachlan Davidson)在此前四天向 Meta 的漏洞赏金计划报告了该问题。Meta 的安全团队在次日进行了验证。补丁和公开披露于 12 月 3 日同时发布。

我仔细研究了安全公告、补丁差异对比以及事后分析报告。关注的不是安全行业的热门观点,而是实际的运作机制。以下是引人注目的要点。

本文内容包括:

  1. 漏洞详情
  2. Flight 协议与 Thenable 对象
  3. 通过原型链实现远程代码执行(RCE)
  4. 为何默认配置的 Next.js 存在漏洞
  5. 受影响的软件包
  6. 发现与披露过程
  7. 野外利用情况
  8. 影响范围
  9. 长达 700 行的诱饵补丁
  10. 人工智能生成的虚假概念验证(PoC)
  11. Cloudflare 中断事件
  12. 修复方案
  13. 应对措施

1. 漏洞详情

React 19 引入了服务器组件,它们通过一种名为 Flight 的协议与客户端通信。Flight 负责在网络传输的一端序列化数据,并在另一端反序列化数据。

Flight 未能正确验证传入的有效负载。攻击者可以发送一个包含伪造“Chunk”对象的精心构造的 HTTP 请求。当 React 尝试将该对象解析为 Promise 时,定义在该对象上的 then 方法便会执行。

利用链如下:

  1. 攻击者发送一个伪造的 Chunk 对象。
  2. React 尝试将其作为 Promise 进行处理。
  3. 伪造的 then 方法运行。
  4. 通过 JavaScript 的原型链,Array.constructor 指向 Function() 构造函数。
  5. Function() 在运行时将字符串编译为可执行代码,从而在服务器上执行任意代码。

2. Flight 协议与 Thenable 对象

Flight 协议以以下格式传输 React 服务器组件(RSC)有效负载:

0:{"name":"MyComponent","env":"Server"}
1:["$","div",null,{"children":"Hello"}]

问题在于,React 在解析传入对象并尝试将其视为 Promise 之前,并未先检查 then 方法。在 JavaScript 中,任何拥有 then 方法的对象都被视为“Thenable”(可.then 对象):

// 常规 Promise
const 

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部