{"id":"CVE-2026-34831","aliases":["GHSA-q2ww-5357-x388"],"url":"https://o3.security/vulnerability/CVE-2026-34831","summary":"Rack: Content-Length mismatch in Rack::Files error responses","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.","published":"2026-04-02T16:43:08.762Z","modified":"2026-09-10T18:26:55.317707100Z","cvss":{"score":4.8,"severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N"},"epss":null,"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"RubyGems","name":"rack","fixedVersion":"2.2.23"},{"ecosystem":"RubyGems","name":"rack","fixedVersion":"3.1.21"},{"ecosystem":"RubyGems","name":"rack","fixedVersion":"3.2.6"}],"fix":null,"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/34xxx/CVE-2026-34831.json"},{"type":"ADVISORY","url":"https://github.com/rack/rack/security/advisories/GHSA-q2ww-5357-x388"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-34831"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-09-10T18:26:55.317707100Z"}}