{"id":"UBUNTU-CVE-2026-41316","details":"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.","modified":"2026-07-16T20:56:11.352857108Z","published":"2026-04-24T03:16:00Z","upstream":["CVE-2026-41316"],"references":[{"type":"REPORT","url":"https://ubuntu.com/security/CVE-2026-41316"},{"type":"REPORT","url":"https://www.cve.org/CVERecord?id=CVE-2026-41316"},{"type":"REPORT","url":"https://github.com/ruby/erb/security/advisories/GHSA-q339-8rmv-2mhv"}],"affected":[{"package":{"name":"jruby","ecosystem":"Ubuntu:Pro:14.04:LTS","purl":"pkg:deb/ubuntu/jruby?arch=source&distro=esm-infra-legacy%2Ftrusty"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.5.6-5ubuntu1","1.5.6-6","1.5.6-7","1.5.6-9+deb8u2build0.14.04.1~esm2"],"ecosystem_specific":{"binaries":[{"binary_version":"1.5.6-9+deb8u2build0.14.04.1~esm2","binary_name":"jruby"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-41316.json"}},{"package":{"name":"ruby2.3","ecosystem":"Ubuntu:Pro:16.04:LTS","purl":"pkg:deb/ubuntu/ruby2.3?arch=source&distro=esm-infra-legacy%2Fxenial"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.3.0-1","2.3.0-2","2.3.0-4ubuntu2","2.3.0-4ubuntu3","2.3.0-5ubuntu1","2.3.1-2~16.04","2.3.1-2~16.04.2","2.3.1-2~16.04.4","2.3.1-2~16.04.5","2.3.1-2~16.04.6","2.3.1-2~16.04.7","2.3.1-2~16.04.9","2.3.1-2~16.04.10","2.3.1-2~16.04.11","2.3.1-2~16.04.12","2.3.1-2~ubuntu16.04.13","2.3.1-2~ubuntu16.04.14","2.3.1-2~ubuntu16.04.15","2.3.1-2~ubuntu16.04.16","2.3.1-2~ubuntu16.04.16+esm1","2.3.1-2~ubuntu16.04.16+esm2","2.3.1-2~ubuntu16.04.16+esm3","2.3.1-2~ubuntu16.04.16+esm4","2.3.1-2~ubuntu16.04.16+esm5","2.3.1-2~ubuntu16.04.16+esm6","2.3.1-2~ubuntu16.04.16+esm7","2.3.1-2~ubuntu16.04.16+esm8","2.3.1-2~ubuntu16.04.16+esm9","2.3.1-2~ubuntu16.04.16+esm10","2.3.1-2~ubuntu16.04.16+esm11","2.3.1-2~ubuntu16.04.16+esm12","2.3.1-2~ubuntu16.04.16+esm14","2.3.1-2~ubuntu16.04.16+esm15"],"ecosystem_specific":{"binaries":[{"binary_name":"libruby2.3","binary_version":"2.3.1-2~ubuntu16.04.16+esm15"},{"binary_name":"ruby2.3","binary_version":"2.3.1-2~ubuntu16.04.16+esm15"},{"binary_name":"ruby2.3-tcltk","binary_version":"2.3.1-2~ubuntu16.04.16+esm15"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-41316.json"}},{"package":{"name":"jruby","ecosystem":"Ubuntu:16.04:LTS","purl":"pkg:deb/ubuntu/jruby?arch=source&distro=xenial"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.7.21-2ubuntu4","1.7.22-1ubuntu1"],"ecosystem_specific":{"binaries":[{"binary_version":"1.7.22-1ubuntu1","binary_name":"jruby"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-41316.json"}},{"package":{"name":"ruby2.5","ecosystem":"Ubuntu:Pro:18.04:LTS","purl":"pkg:deb/ubuntu/ruby2.5?arch=source&distro=esm-infra%2Fbionic"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.5.0~preview1-1ubuntu2","2.5.0-4ubuntu1","2.5.0-4ubuntu4","2.5.0-5ubuntu1","2.5.0-6ubuntu1","2.5.1-1ubuntu1","2.5.1-1ubuntu1.1","2.5.1-1ubuntu1.2","2.5.1-1ubuntu1.4","2.5.1-1ubuntu1.5","2.5.1-1ubuntu1.6","2.5.1-1ubuntu1.7","2.5.1-1ubuntu1.8","2.5.1-1ubuntu1.9","2.5.1-1ubuntu1.10","2.5.1-1ubuntu1.11","2.5.1-1ubuntu1.12","2.5.1-1ubuntu1.13","2.5.1-1ubuntu1.14","2.5.1-1ubuntu1.15","2.5.1-1ubuntu1.16","2.5.1-1ubuntu1.16+esm1","2.5.1-1ubuntu1.16+esm3","2.5.1-1ubuntu1.16+esm4","2.5.1-1ubuntu1.16+esm5","2.5.1-1ubuntu1.16+esm6","2.5.1-1ubuntu1.16+esm7","2.5.1-1ubuntu1.16+esm8"],"ecosystem_specific":{"binaries":[{"binary_name":"libruby2.5","binary_version":"2.5.1-1ubuntu1.16+esm8"},{"binary_name":"ruby2.5","binary_version":"2.5.1-1ubuntu1.16+esm8"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-41316.json"}},{"package":{"name":"jruby","ecosystem":"Ubuntu:18.04:LTS","purl":"pkg:deb/ubuntu/jruby?arch=source&distro=bionic"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["9.1.13.0-1","9.1.17.0-1~18.04"],"ecosystem_specific":{"binaries":[{"binary_version":"9.1.17.0-1~18.04","binary_name":"jruby"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-41316.json"}},{"package":{"name":"ruby2.7","ecosystem":"Ubuntu:Pro:20.04:LTS","purl":"pkg:deb/ubuntu/ruby2.7?arch=source&distro=esm-infra%2Ffocal"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.7.0-1","2.7.0-2","2.7.0-3","2.7.0-4","2.7.0-4ubuntu1","2.7.0-5ubuntu1","2.7.0-5ubuntu1.1","2.7.0-5ubuntu1.2","2.7.0-5ubuntu1.3","2.7.0-5ubuntu1.4","2.7.0-5ubuntu1.5","2.7.0-5ubuntu1.6","2.7.0-5ubuntu1.7","2.7.0-5ubuntu1.8","2.7.0-5ubuntu1.9","2.7.0-5ubuntu1.10","2.7.0-5ubuntu1.11","2.7.0-5ubuntu1.12","2.7.0-5ubuntu1.13","2.7.0-5ubuntu1.14","2.7.0-5ubuntu1.15","2.7.0-5ubuntu1.16","2.7.0-5ubuntu1.17","2.7.0-5ubuntu1.18","2.7.0-5ubuntu1.18+esm1","2.7.0-5ubuntu1.18+esm3","2.7.0-5ubuntu1.18+esm4","2.7.0-5ubuntu1.18+esm5"],"ecosystem_specific":{"binaries":[{"binary_name":"libruby2.7","binary_version":"2.7.0-5ubuntu1.18+esm5"},{"binary_name":"ruby2.7","binary_version":"2.7.0-5ubuntu1.18+esm5"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-41316.json"}},{"package":{"name":"jruby","ecosystem":"Ubuntu:20.04:LTS","purl":"pkg:deb/ubuntu/jruby?arch=source&distro=focal"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["9.1.17.0-3","9.1.17.0-3build5","9.1.17.0-3build6"],"ecosystem_specific":{"binaries":[{"binary_name":"jruby","binary_version":"9.1.17.0-3build6"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-41316.json"}},{"package":{"name":"ruby3.0","ecosystem":"Ubuntu:22.04:LTS","purl":"pkg:deb/ubuntu/ruby3.0?arch=source&distro=jammy"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.0.2-5ubuntu1","3.0.2-7","3.0.2-7ubuntu2","3.0.2-7ubuntu2.1","3.0.2-7ubuntu2.2","3.0.2-7ubuntu2.3","3.0.2-7ubuntu2.4","3.0.2-7ubuntu2.5","3.0.2-7ubuntu2.6","3.0.2-7ubuntu2.7","3.0.2-7ubuntu2.8","3.0.2-7ubuntu2.10","3.0.2-7ubuntu2.11","3.0.2-7ubuntu2.12","3.0.2-7ubuntu2.13"],"ecosystem_specific":{"binaries":[{"binary_name":"libruby3.0","binary_version":"3.0.2-7ubuntu2.13"},{"binary_name":"ruby3.0","binary_version":"3.0.2-7ubuntu2.13"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-41316.json"}},{"package":{"name":"jruby","ecosystem":"Ubuntu:24.04:LTS","purl":"pkg:deb/ubuntu/jruby?arch=source&distro=noble"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["9.3.9.0+ds-1","9.4.5.0+ds-1","9.4.5.0+ds-1ubuntu1","9.4.6.0+ds-1ubuntu3"],"ecosystem_specific":{"binaries":[{"binary_name":"jruby","binary_version":"9.4.6.0+ds-1ubuntu3"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-41316.json"}},{"package":{"name":"ruby3.2","ecosystem":"Ubuntu:24.04:LTS","purl":"pkg:deb/ubuntu/ruby3.2?arch=source&distro=noble"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.2.3-1","3.2.3-1build2","3.2.3-1build3","3.2.3-1ubuntu0.24.04.1","3.2.3-1ubuntu0.24.04.3","3.2.3-1ubuntu0.24.04.5","3.2.3-1ubuntu0.24.04.6","3.2.3-1ubuntu0.24.04.7","3.2.3-1ubuntu0.24.04.8"],"ecosystem_specific":{"binaries":[{"binary_version":"3.2.3-1ubuntu0.24.04.8","binary_name":"libruby3.2"},{"binary_version":"3.2.3-1ubuntu0.24.04.8","binary_name":"ruby3.2"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-41316.json"}},{"package":{"name":"jruby","ecosystem":"Ubuntu:25.10","purl":"pkg:deb/ubuntu/jruby?arch=source&distro=questing"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["9.4.8.0+ds-2ubuntu1","9.4.8.0+ds-3ubuntu1"],"ecosystem_specific":{"binaries":[{"binary_name":"jruby","binary_version":"9.4.8.0+ds-3ubuntu1"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-41316.json"}},{"package":{"name":"ruby3.3","ecosystem":"Ubuntu:25.10","purl":"pkg:deb/ubuntu/ruby3.3?arch=source&distro=questing"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.3.7-1ubuntu2","3.3.8-2ubuntu1","3.3.8-2ubuntu2","3.3.8-2ubuntu2.1"],"ecosystem_specific":{"binaries":[{"binary_name":"libruby3.3","binary_version":"3.3.8-2ubuntu2.1"},{"binary_name":"ruby3.3","binary_version":"3.3.8-2ubuntu2.1"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-41316.json"}},{"package":{"name":"jruby","ecosystem":"Ubuntu:26.04:LTS","purl":"pkg:deb/ubuntu/jruby?arch=source&distro=resolute"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["9.4.8.0+ds-3ubuntu1"],"ecosystem_specific":{"binaries":[{"binary_version":"9.4.8.0+ds-3ubuntu1","binary_name":"jruby"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-41316.json"}},{"package":{"name":"ruby3.3","ecosystem":"Ubuntu:26.04:LTS","purl":"pkg:deb/ubuntu/ruby3.3?arch=source&distro=resolute"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.3.8-2ubuntu2","3.3.8-2ubuntu3","3.3.8-2ubuntu3.1"],"ecosystem_specific":{"binaries":[{"binary_version":"3.3.8-2ubuntu3.1","binary_name":"libruby3.3"},{"binary_name":"ruby3.3","binary_version":"3.3.8-2ubuntu3.1"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-41316.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"},{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"},{"type":"Ubuntu","score":"medium"}]}