Bug 2461369 (CVE-2026-41316) - CVE-2026-41316 erb: ERB: Arbitrary code execution via deserialization bypass
Summary: CVE-2026-41316 erb: ERB: Arbitrary code execution via deserialization bypass
Keywords:
Status: NEW
Alias: CVE-2026-41316
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Product Security DevOps Team
QA Contact:
URL:
Whiteboard:
Depends On: 2463216
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-04-24 03:01 UTC by OSIDB Bzimport
Modified: 2026-04-27 13:34 UTC (History)
6 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description OSIDB Bzimport 2026-04-24 03:01:40 UTC
ERB is a templating system for Ruby. Ruby 2.7.0 (before ERB 2.2.0 was published on rubygems.org) introduced an `@_init` instance variable guard in `ERB#result` and `ERB#run` to prevent code execution when an ERB object is reconstructed via `Marshal.load` (deserialization). However, three other public methods that also evaluate `@src` via `eval()` were not given the same guard: `ERB#def_method`, `ERB#def_module`, and `ERB#def_class`. An attacker who can trigger `Marshal.load` on untrusted data in a Ruby application that has `erb` loaded can use `ERB#def_module` (zero-arg, default parameters) as a code execution sink, bypassing the `@_init` protection entirely. ERB 4.0.3.1, 4.0.4.1, 6.0.1.1, and 6.0.4 patch the issue.


Note You need to log in before you can comment on or make changes to this bug.