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.
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/41xxx/CVE-2026-41316.json",
"cna_assigner": "GitHub_M",
"cwe_ids": [
"CWE-693"
]
}{
"extracted_events": [
{
"introduced": "0"
},
{
"fixed": "4.0.3.1"
},
{
"last_affected": "= 4.0.4"
},
{
"introduced": "5.0.0"
},
{
"fixed": "6.0.1.1"
},
{
"introduced": "6.0.2"
},
{
"fixed": "6.0.4"
}
],
"source": "AFFECTED_FIELD"
}