Ruby 4.0 通用 RCE 反序列化利用链:突破版本限制,深入底层构建
引言2026 年 8 月 5 日OpenAI 披露一组正在接受评估的 AI 代理突破沙盒限制取得运行所在集群的管理员控制权部分通过利用 Ruby 反序列化漏洞执行命令。早在 2018 年就发布了首个 Ruby 通用 RCE 反序列化利用链不过仅适用于 Ruby 2.6.10 及以下版本最新公开利用链也仅能在 3.4 - rc 及以下版本使用。本文将发布新的通用利用链能在 Ruby 4.0.6 上把单次 Marshal.load 操作转化为命令执行且无需修改可在 3.3 及以上版本使用结合了新利用点和旧利用点新用法。背景序列化是将对象转换为字节序列的过程这些字节可网络传输、存储在文件系统或数据库重建过程叫反序列化。Ruby 中常用“编组”和“解编组”对应 Marshal.dump 和 Marshal.load 操作。十三年的 Ruby 反序列化历程通用 Ruby 反序列化利用链始于 2018 年基于早期 Ruby on Rails 特定应用利用链研究成果又影响后续特定应用利用链。以下是重要里程碑本文利用链基于部分成果构建2013 年 1 月 10 日 - Hailey Somerville 发布 Rails 3.2.10 远程代码执行2013 年 1 月 31 日 - Hailey Somerville 提交 Ruby 漏洞跟踪问题2016 年 5 月 6 日 - Phenoelit 的 joernchen 发表攻击 Ruby on Rails 应用程序2018 年 11 月 8 日 - Luke Jahnke 发布 Ruby 2.x 通用 RCE 反序列化利用链2019 年 1 月 2 日 - ooooooo_q 报告 CVE - 2019 - 54202019 年 3 月 2 日 - Etienne Stalmans 发表使用 Ruby YAML.load 实现通用 RCE2019 年 6 月 20 日 - Sivathmican Sivakumaran 和 Pengsu Cheng 发表通过 Ruby on Rails Active Storage 不安全反序列化实现远程代码执行2021 年 1 月 7 日 - William Bowling 发布适用于 Ruby 2.x - 3.x 的通用反序列化利用点2021 年 1 月 9 日 - Etienne Stalmans 发表使用 Ruby YAML.load版本 2.7实现通用 RCE2022 年 3 月 28 日 - httpvoid 发布 Ruby 反序列化 - Rails 上的利用点2022 年 4 月 4 日 - William Bowling 发布第二轮适用于 Ruby 2.x - 3.x 的更新版通用反序列化利用点2022 年 5 月 17 日 - Ben Lincoln 发表 Ruby 漏洞利用危险的打开、发送和反序列化操作2024 年 3 月 13 日 - Alex Leahu 发表在 Ruby 领域发现反序列化利用链2024 年 6 月 20 日 - Peter Stöckli 发表通过发送 JSON 执行命令了解 Ruby 项目中不安全反序列化漏洞的原理2024 年 10 月 17 日 - Leonardo Giovannini 提交更新用于 Marshal 加载的 Ruby 利用点2024 年 11 月 24 日 - Luke Jahnke 发布 Ruby 3.4 通用 RCE 反序列化利用链2024 年 12 月 3 日 - Luke Jahnke 发表 Gem::SafeMarshal 逃逸2025 年 8 月 20 日 - Matt Schwager 发表编组疯狂Ruby 反序列化漏洞利用简史2026 年 8 月 5 日 - OpenAI 在 2026 年美国黑帽大会上披露自主 AI 代理在实际场景中利用 RubyJRuby反序列化漏洞2026 年 - Luke Jahnke 发布 Ruby 4.0 通用 RCE 反序列化利用链3.4 利用链失效的原因2024 年末发布的最新公开利用链通过特定有效载荷在 Ruby 3.4 - rc 版本实现命令执行。但发布十天后RubyGems 中提交两个代码更改移除了它依赖的利用点导致该利用链在正式版本失效。第一个提交改进 marshal_load 方法中的类型检查使相关类更难用作利用点第二个提交停止在实例变量中存储可执行文件名称移除相关类作为 ACE 利用点的用法。这两个提交导致 to_s_wrapper 和 exec_gadget 失效但 Gem::SpecFetcher 和 call_url_and_create_folder 未受影响在 Ruby 4.0 中仍可用。构建新的利用链扩展可用的利用点集合利用链以 Gem::SpecFetcher 开头因 Marshal.load 解析该常量会触发 RubyGems 自动加载机制增加可供利用的类集后续利用链依赖 Gem::URI::Generic、Gem::RequestSet::Lockfile 和 Gem::StubSpecification 等类。寻找新的代码执行途径Gem::Specification.load 方法为 exec_gadget 提供替代方案该方法从磁盘读取文件并将内容传递给 eval 函数控制文件名和内容的利用链可实现任意代码执行。调用加载方法现有利用点集合中无灵活利用点但 Gem::StubSpecification 可通过调用 hash 方法间接调用 Gem::Specification.load(loaded_from)loaded_from 可通过反序列化设置。触发 hash 方法调用对象作为 Hash 的键时Ruby 会调用其 hash 方法Marshal.load 重建哈希表时插入键可触发。这种触发方式是语言基本特性交互移除会改变核心数据结构行为。将代码写入文件系统利用链复用 call_url_and_create_folder 将攻击者控制的代码写入磁盘其 URL 下载功能可获取内容并通过目录遍历写入文件系统。触发下载操作3.4 利用链的调用方法因类型检查提交移除Ruby 自身的 Time 反序列化机制提供新调用者time_mload 方法会丢弃异常。Gem::URI::Generic 可将 to_str 调用转换为 to_s 调用。构造托管文件3.4 利用链指向真实 gemspec 文件此次文件需包含 Ruby 代码需先压缩。call_url_and_create_folder 设置相关属性触发目录遍历文件通过 HTTPS 提供解压后保存到 /tmp/quick/Marshal.4.8/name-.gemspec。序列化 Marshal 无法直接转储的 Time 对象利用链中其他利用点可正常序列化但 Time 对象不同。可先序列化替代对象再修补字节。生成流时需注意避免提前触发利用点可暂时覆盖 Gem::StubSpecification 的 hash 方法。生成器给出了生成器代码每个利用点负责写入或执行代码。运行生成器输出最终利用链。有效载荷运行生成器输出的最终利用链使用前需满足两个条件压缩有效载荷由指定主机通过 HTTPS 以 poc - id.rz 文件名提供目标系统可写入 /tmp 目录。目标系统无需其他额外条件。运行测试使用 Docker 镜像 ruby:4.0.6 运行生成的有效载荷id 命令成功执行后续异常可避免可在被评估源代码末尾添加 Gem::Specification 对象。复现过程中被评估源代码会保留在 /tmp/quick/Marshal.4.8/name-.gemspec 文件中。结论新利用链可在 Ruby 4.0.6 上把单次 Marshal.load 操作转化为命令执行无需修改可在 3.3 及以上版本使用只需可访问的 HTTPS 主机和可写目录。大部分内容非从头构建call_url_and_create_folder 用途改变利用点生命周期长。新突破在于深入底层容错调用者和触发机制用 C 语言编写难以移除。建议处理不可信输入时不用 Marshal.load使用仅处理数据的格式代替。

相关新闻

GitHub功能全览:涵盖AI代码生成等,lumabri引擎助力模型高效运行与对话!

GitHub功能全览:涵盖AI代码生成等,lumabri引擎助力模型高效运行与对话!

导航菜单包含登录、外观设置等选项,平台提供AI代码生成、开发者工作流、应用程序安全、探索等功能,各功能下有对应链接。解决方案按公司规模、用例、行业划分提供不同版本和方案,还有查看所有解决方案的链接。资源按主题和类型探索资源&#…

2026/10/17 6:31:01 阅读更多 →
加油站大姐的一句话,让我重新算了油钱

加油站大姐的一句话,让我重新算了油钱

加油站大姐的一句话,让我重新算了油钱凌晨一点,我在加油站排队。前面一辆出租车,司机摇下车窗跟加油员抱怨:"这油价,一个月涨两回,还让不让人跑了?"加油的大姐头也不抬:&q…

2026/10/17 6:35:57 阅读更多 →
腾讯元宝导出 pdf 颜色不一样怎么办?AI 导出鸭结合行业白皮书数据,从技术层面拆解配色异常整改思路

腾讯元宝导出 pdf 颜色不一样怎么办?AI 导出鸭结合行业白皮书数据,从技术层面拆解配色异常整改思路

摘要 腾讯元宝生成的文案、图文资料在导出PDF时常出现色彩偏移、底色丢失、图片变色等问题,是职场办公、教研创作的普遍难题。本文围绕该色差问题,结合市场实际需求,对比五种主流文档导出模式,依托AI导出鸭专属技术方案与行业白皮…

2026/10/16 14:45:03 阅读更多 →

最新新闻

Unity WebGL跨平台自动全屏横屏适配方案:Windows、安卓、iOS全兼容

Unity WebGL跨平台自动全屏横屏适配方案:Windows、安卓、iOS全兼容

简介:这份资源是面向Unity开发者的WebGL多平台适配Demo,重点解决Unity WebGL打包后在Windows浏览器、Android与iOS移动设备上自动全屏并强制横屏显示的问题。内容围绕Screen.fullScreen与Screen.orientation的调用、Application.platform平台检测、WebGL…

2026/10/18 13:12:50 阅读更多 →
xAI推出Grok Bot智能体平台:用Cursor Base URL改到TaoToken实测自主任务流

xAI推出Grok Bot智能体平台:用Cursor Base URL改到TaoToken实测自主任务流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 13:12:50 阅读更多 →
【Lora分享】国产可图大模型厚积薄发,GLM3加持质的飞跃,ComfyUI最全指南与SD3综合评比孰更强?TaoToken统一Key实战

【Lora分享】国产可图大模型厚积薄发,GLM3加持质的飞跃,ComfyUI最全指南与SD3综合评比孰更强?TaoToken统一Key实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 13:12:50 阅读更多 →
OpenClaw Linux 完整安装指南:从环境准备到 TaoToken 统一 Key 接入

OpenClaw Linux 完整安装指南:从环境准备到 TaoToken 统一 Key 接入

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 13:12:50 阅读更多 →
AI辅助工具调研:把 Cline MCP 的 endpoint 改到 TaoToken 的配置记录

AI辅助工具调研:把 Cline MCP 的 endpoint 改到 TaoToken 的配置记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 13:12:50 阅读更多 →
pH敏感型IgG标记试剂:从抗体标记设计到活细胞内吞追踪的实战指南

pH敏感型IgG标记试剂:从抗体标记设计到活细胞内吞追踪的实战指南

做这行做久了会发现,抗体标记这件事,看着是"把荧光染料接到IgG上"这么一步操作,真正拉开差距的,全在细节里。普通标记试剂只能告诉你抗体在哪里,而pH敏感型IgG标记试剂能告诉你抗体到了什么环境、经历了什么…

2026/10/18 13:11:50 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →