文章摘要
Lachlan Davidson意外发现React框架存在一个名为"React2Shell"的远程代码执行高危漏洞,并于2025年11月30日报告给Meta公司。Meta在12月3日迅速发布修复补丁(CVE-2025-55182)和安全公告,敦促开发者立即更新。这个影响数百万网站的关键漏洞是作者在研究现代Web应用协议时偶然发现的。
文章总结
React2Shell漏洞发现历程
作者:Lachlan Davidson
关键时间线
- 2025年11月30日:向Meta报告了关键的远程代码执行漏洞"React2Shell"
- 12月3日:Meta发布修复补丁和公开公告(CVE-2025-55182),敦促开发者立即更新
研究背景
作者作为专业黑客,最初只是想理解React的通信协议以提升对现代Web应用的渗透测试能力。在测试基于Next.js(React流行框架)的Web应用时,注意到React Server Components(RSC)和Server Actions使用的特殊请求格式:
0=[{ "a": "$$undefined", "b": "$1:foo:bar" }]&1=...
这种被称为"Flight"的协议允许在客户端和服务器之间传递复杂JavaScript对象,但缺乏官方文档说明。
Flight协议解析
Flight协议在JSON基础上扩展支持: - 复杂数据类型(Date/BigInt/Map等) - 引用(包括循环引用) - Promise异步数据 - 通过"$"语法标记特殊类型
关键漏洞点在于:Flight允许引用对象原型链上的属性,包括内置方法如Number.prototype.toString。
漏洞利用过程
初始发现
通过构造特殊Flight消息,可以:
1. 绕过类型检查(TypeScript仅在编译时有效)
2. 触发隐式函数调用(如toString)
3. 控制函数参数
关键突破
发现await decodeReply(...)会处理thenable对象,通过构造恶意thenable可以:
- 链式调用任意函数
- 访问React内部Chunk对象
- 最终实现通过Module._load执行任意Node.js代码
漏洞影响
该漏洞影响数百万使用React/Next.js的网站,可导致远程代码执行。Meta安全团队在17小时内确认并修复漏洞,协调行业合作伙伴在公开前部署防护措施。
后续发展
作者与安全研究员Sylvie Mayer合作扫描易受攻击目标进行预警。完整的技术细节和PoC代码已在GitHub公开。
(注:原文中大量技术细节和对话内容已精简,保留核心漏洞发现逻辑和关键时间节点)
评论总结
这篇评论总结围绕一篇关于漏洞发现的文章展开,主要观点如下:
- 对文章内容和图表设计的赞赏
- "Nice read! I love the 'we are so back' vs. 'it's so over' graph."(keyle)
- "What a great write-up. Thanks for sharing..."(simonreiff)
- 对研究者专业精神和合作态度的肯定
- "Lachlan was a dream of a security researcher...helping make the internet safer"(Rauchg)
- "hopping on multiple calls...to help us validate remediations"(Rauchg)
- 对Meta团队高效响应的惊叹
- "Amazingly...confirmed my submission in around 17 hours"(sam1r引用原文)
- "Realize what you have done...in < 24 hours"(sam1r)
- 对技术细节的指正
- "One correction: The link...goes to the wrong file"(phyzome)
所有评论均为正面评价(无评分差异),主要集中在对研究过程、合作精神和文章质量的赞赏,仅有一条技术性更正。