{"id":"UBUNTU-CVE-2026-34831","details":"Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Files#fail sets the Content-Length response header using String#size instead of String#bytesize. When the response body contains multibyte UTF-8 characters, the declared Content-Length is smaller than the number of bytes actually sent on the wire. Because Rack::Files reflects the requested path in 404 responses, an attacker can trigger this mismatch by requesting a non-existent path containing percent-encoded UTF-8 characters. This results in incorrect HTTP response framing and may cause response desynchronization in deployments that rely on the incorrect Content-Length value. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.","modified":"2026-05-20T16:25:34.714739007Z","published":"2026-04-02T17:16:00Z","related":["USN-8182-1"],"upstream":["CVE-2026-34831"],"references":[{"type":"REPORT","url":"https://ubuntu.com/security/CVE-2026-34831"},{"type":"REPORT","url":"https://www.cve.org/CVERecord?id=CVE-2026-34831"},{"type":"REPORT","url":"https://github.com/rack/rack/security/advisories/GHSA-q2ww-5357-x388"},{"type":"ADVISORY","url":"https://ubuntu.com/security/notices/USN-8182-1"}],"affected":[{"package":{"name":"ruby-rack","ecosystem":"Ubuntu:Pro:22.04:LTS","purl":"pkg:deb/ubuntu/ruby-rack?arch=source&distro=esm-apps%2Fjammy"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.4-5ubuntu1.2+esm3"}]}],"versions":["2.1.4-3","2.1.4-4","2.1.4-5","2.1.4-5ubuntu1","2.1.4-5ubuntu1+esm2","2.1.4-5ubuntu1+esm3","2.1.4-5ubuntu1+esm4","2.1.4-5ubuntu1+esm5","2.1.4-5ubuntu1.1","2.1.4-5ubuntu1.1+esm1","2.1.4-5ubuntu1.1+esm2","2.1.4-5ubuntu1.2","2.1.4-5ubuntu1.2+esm1","2.1.4-5ubuntu1.2+esm2"],"ecosystem_specific":{"binaries":[{"binary_name":"ruby-rack","binary_version":"2.1.4-5ubuntu1.2+esm3"}],"availability":"Available with Ubuntu Pro: https://ubuntu.com/pro"},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-34831.json"}},{"package":{"name":"ruby-rack","ecosystem":"Ubuntu:24.04:LTS","purl":"pkg:deb/ubuntu/ruby-rack?arch=source&distro=noble"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.7-1ubuntu0.7"}]}],"versions":["2.2.4-3","2.2.7-1","2.2.7-1ubuntu0.1","2.2.7-1ubuntu0.2","2.2.7-1ubuntu0.3","2.2.7-1ubuntu0.4","2.2.7-1ubuntu0.5","2.2.7-1ubuntu0.6"],"ecosystem_specific":{"binaries":[{"binary_name":"ruby-rack","binary_version":"2.2.7-1ubuntu0.7"}],"availability":"No subscription required"},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-34831.json"}},{"package":{"name":"ruby-rack","ecosystem":"Ubuntu:25.10","purl":"pkg:deb/ubuntu/ruby-rack?arch=source&distro=questing"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.1.16-0.1ubuntu0.3"}]}],"versions":["2.2.7-1.1","3.1.16-0.1","3.1.16-0.1ubuntu0.1","3.1.16-0.1ubuntu0.2"],"ecosystem_specific":{"binaries":[{"binary_name":"ruby-rack","binary_version":"3.1.16-0.1ubuntu0.3"}],"availability":"No subscription required"},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-34831.json"}},{"package":{"name":"ruby-rack","ecosystem":"Ubuntu:26.04:LTS","purl":"pkg:deb/ubuntu/ruby-rack?arch=source&distro=resolute"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.1.16-0.1","3.1.18-1","3.1.18-1build1","3.2.4-1ubuntu1"],"ecosystem_specific":{"binaries":[{"binary_version":"3.2.4-1ubuntu1","binary_name":"ruby-rack"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-34831.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:L/I:L/A:N"},{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"},{"type":"Ubuntu","score":"medium"}]}