Skip to content

Commit 7cfadc2

Browse files
committed
Translate ERV CVE and Ruby 4.0.3 released(zh_cn)
1 parent 59ecf74 commit 7cfadc2

2 files changed

Lines changed: 95 additions & 0 deletions

File tree

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
layout: news_post
3+
title: "CVE-2026-41316: 通过 def_module / def_method / def_class 绕过 ERB @_init 反序列化保护机制"
4+
author: "k0kubun"
5+
translator: "GAO Jun"
6+
date: 2026-04-21 07:51:00 +0000
7+
tags: security
8+
lang: zh_cn
9+
---
10+
11+
我们发布了关于 CVE-2026-41316 的安全公告。
12+
13+
## CVE-2026-41316: 通过 def_module / def_method / def_class 绕过 ERB @_init 反序列化保护机制"
14+
15+
ERB 中存在一个反序列化漏洞,编号为 [CVE-2026-41316](https://www.cve.org/CVERecord?id=CVE-2026-41316)。我们建议您更新 `erb` gem。
16+
17+
### 影响范围
18+
19+
任意 Ruby 应用,如果在不受信任的数据上调用 `Marshal.load`,并且同时加载了 `erb``activesupport`,都会存在任意代码执行漏洞。场景包括:
20+
21+
- **Ruby on Rails 应用中导入不受信任的序列化数据** -- 所有使用 `Marshal.load` 进行缓存、数据导入或 IPC 的 Rails 应用 (Rails 应用都加载了 ActiveSupport 和 ERB)
22+
- **导入不受信任的序列化数据的 Ruby 工具** -- 所有使用 `Marshal.load` 进行缓存、数据导入或 IPC 的工具
23+
- **遗留 Rails 应用** (7.0之前) 依旧使用 Marshal 来进行 cookie 会话序列化的应用
24+
25+
### 详情
26+
27+
ERB 实现了一种 `@_init` 保护机制,在 ERB 对象通过 `Marshal.load` 处理不受信任代码时,避免执行代码。
28+
然而,`ERB#def_method``ERB#def_module``ERB#def_class` 在处理模板代码时,会忽略这个保护机制,当攻击者可以控制转递到 `Marshal.load` 的数据时,就能绕过保护并执行任意代码。
29+
尤其是 `def_module` 方法没有参数,因此很容易被用于构造一个反序列化的调用链。
30+
31+
请更新 `erb` gem 至版本 4.0.3.1,4.0.4.1,6.0.1.1,6.0.4 或后续版本。
32+
33+
### 受影响版本
34+
35+
* erb gem 6.0.3 及之前版本
36+
37+
### 致谢
38+
39+
感谢 [TristanInSec](https://github.com/TristanInSec) 发现此问题。
40+
41+
## 历史
42+
43+
* 初次发布于 2026-04-21 07:51:00 (UTC)
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
layout: news_post
3+
title: "Ruby 4.0.3 已发布"
4+
author: k0kubun
5+
translator: "GAO Jun"
6+
date: 2026-04-21 08:45:44 +0000
7+
lang: zh_cn
8+
---
9+
10+
Ruby 4.0.3 已发布。
11+
12+
此版本只是更新了 ERB 6.0.1.1,以提供 [CVE-2026-41316](https://www.ruby-lang.org/zh/news/2026/04/21/erb-cve-2026-41316/) 的安全补丁。
13+
14+
如果您的应用在不受信任的数据上调用 `Marshal.load` 并且同时加载了 erb 和 activesupport,请将您的 ERB 更新到
15+
4.0.3.1,4.0.4.1,6.0.1.1,6.0.4 或之后版本。您可以使用此次发布的 Ruby 4.0.3 来实现此修复。
16+
17+
## 发布计划
18+
19+
我们计划在每次 **常规** 发布后的 2 个月为最新的 Ruby 稳定版本(目前是 Ruby 4.0)发布更新。
20+
Ruby 4.0.4 将于五月发布,4.0.5 将于七月发布,4.0.6 将于九月发布,4.0.7 将于十一月发布。
21+
22+
如果存在会影响到大量用户的重大变更,我们也可能会提前发布新版本,后续版本的发布计划也将进行相应调整。
23+
24+
## 下载
25+
26+
{% assign release = site.data.releases | where: "version", "4.0.3" | first %}
27+
28+
* <{{ release.url.gz }}>
29+
30+
文件大小: {{ release.size.gz }}
31+
SHA1: {{ release.sha1.gz }}
32+
SHA256: {{ release.sha256.gz }}
33+
SHA512: {{ release.sha512.gz }}
34+
35+
* <{{ release.url.xz }}>
36+
37+
文件大小: {{ release.size.xz }}
38+
SHA1: {{ release.sha1.xz }}
39+
SHA256: {{ release.sha256.xz }}
40+
SHA512: {{ release.sha512.xz }}
41+
42+
* <{{ release.url.zip }}>
43+
44+
文件大小: {{ release.size.zip }}
45+
SHA1: {{ release.sha1.zip }}
46+
SHA256: {{ release.sha256.zip }}
47+
SHA512: {{ release.sha512.zip }}
48+
49+
## 发布说明
50+
51+
许多提交者、开发人员以及用户提供了问题报告,帮助我们完成了此版本。
52+
感谢他们的贡献。

0 commit comments

Comments
 (0)