Vulnerability Details CVE-2026-34831
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.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.0
EPSS Ranking 11.3%
CVSS Severity
CVSS v3 Score 4.8
Products affected by CVE-2026-34831
-
-
-
-
-
-
cpe:2.3:a:rack:rack:0.9.1
-
-
cpe:2.3:a:rack:rack:1.0.1
-
-
cpe:2.3:a:rack:rack:1.1.2
-
cpe:2.3:a:rack:rack:1.1.3
-
cpe:2.3:a:rack:rack:1.1.4
-
cpe:2.3:a:rack:rack:1.1.5
-
cpe:2.3:a:rack:rack:1.1.6
-
-
cpe:2.3:a:rack:rack:1.2.1
-
cpe:2.3:a:rack:rack:1.2.2
-
cpe:2.3:a:rack:rack:1.2.3
-
cpe:2.3:a:rack:rack:1.2.4
-
cpe:2.3:a:rack:rack:1.2.5
-
cpe:2.3:a:rack:rack:1.2.6
-
cpe:2.3:a:rack:rack:1.2.7
-
cpe:2.3:a:rack:rack:1.2.8
-
cpe:2.3:a:rack:rack:1.3.0
-
cpe:2.3:a:rack:rack:1.3.1
-
cpe:2.3:a:rack:rack:1.3.10
-
cpe:2.3:a:rack:rack:1.3.2
-
cpe:2.3:a:rack:rack:1.3.3
-
cpe:2.3:a:rack:rack:1.3.4
-
cpe:2.3:a:rack:rack:1.3.5
-
cpe:2.3:a:rack:rack:1.3.6
-
cpe:2.3:a:rack:rack:1.3.7
-
cpe:2.3:a:rack:rack:1.3.8
-
cpe:2.3:a:rack:rack:1.3.9
-
cpe:2.3:a:rack:rack:1.4.0
-
cpe:2.3:a:rack:rack:1.4.1
-
cpe:2.3:a:rack:rack:1.4.2
-
cpe:2.3:a:rack:rack:1.4.3
-
cpe:2.3:a:rack:rack:1.4.4
-
cpe:2.3:a:rack:rack:1.4.5
-
cpe:2.3:a:rack:rack:1.4.6
-
cpe:2.3:a:rack:rack:1.4.7
-
cpe:2.3:a:rack:rack:1.5.0
-
cpe:2.3:a:rack:rack:1.5.1
-
cpe:2.3:a:rack:rack:1.5.2
-
cpe:2.3:a:rack:rack:1.5.3
-
cpe:2.3:a:rack:rack:1.5.4
-
cpe:2.3:a:rack:rack:1.5.5
-
cpe:2.3:a:rack:rack:1.6.0
-
cpe:2.3:a:rack:rack:1.6.1
-
cpe:2.3:a:rack:rack:1.6.10
-
cpe:2.3:a:rack:rack:1.6.11
-
cpe:2.3:a:rack:rack:1.6.12
-
cpe:2.3:a:rack:rack:1.6.13
-
cpe:2.3:a:rack:rack:1.6.2
-
cpe:2.3:a:rack:rack:1.6.3
-
cpe:2.3:a:rack:rack:1.6.4
-
cpe:2.3:a:rack:rack:1.6.5
-
cpe:2.3:a:rack:rack:1.6.6
-
cpe:2.3:a:rack:rack:1.6.7
-
cpe:2.3:a:rack:rack:1.6.8
-
cpe:2.3:a:rack:rack:1.6.9
-
cpe:2.3:a:rack:rack:2.0.0
-
cpe:2.3:a:rack:rack:2.0.1
-
cpe:2.3:a:rack:rack:2.0.2
-
cpe:2.3:a:rack:rack:2.0.3
-
cpe:2.3:a:rack:rack:2.0.4
-
cpe:2.3:a:rack:rack:2.0.5
-
cpe:2.3:a:rack:rack:2.0.6
-
cpe:2.3:a:rack:rack:2.0.7
-
cpe:2.3:a:rack:rack:2.0.8
-
cpe:2.3:a:rack:rack:2.0.9
-
cpe:2.3:a:rack:rack:2.0.9.2
-
cpe:2.3:a:rack:rack:2.0.9.3
-
cpe:2.3:a:rack:rack:2.1.0
-
cpe:2.3:a:rack:rack:2.1.1
-
cpe:2.3:a:rack:rack:2.1.2
-
cpe:2.3:a:rack:rack:2.1.3
-
cpe:2.3:a:rack:rack:2.1.4
-
cpe:2.3:a:rack:rack:2.1.4.2
-
cpe:2.3:a:rack:rack:2.1.4.3
-
cpe:2.3:a:rack:rack:2.2.0
-
cpe:2.3:a:rack:rack:2.2.1
-
cpe:2.3:a:rack:rack:2.2.10
-
cpe:2.3:a:rack:rack:2.2.11
-
cpe:2.3:a:rack:rack:2.2.12
-
cpe:2.3:a:rack:rack:2.2.13
-
cpe:2.3:a:rack:rack:2.2.14
-
cpe:2.3:a:rack:rack:2.2.15
-
cpe:2.3:a:rack:rack:2.2.16
-
cpe:2.3:a:rack:rack:2.2.17
-
cpe:2.3:a:rack:rack:2.2.18
-
cpe:2.3:a:rack:rack:2.2.19
-
cpe:2.3:a:rack:rack:2.2.2
-
cpe:2.3:a:rack:rack:2.2.20
-
cpe:2.3:a:rack:rack:2.2.3
-
cpe:2.3:a:rack:rack:2.2.4
-
cpe:2.3:a:rack:rack:2.2.4.1
-
cpe:2.3:a:rack:rack:2.2.5
-
cpe:2.3:a:rack:rack:2.2.6
-
cpe:2.3:a:rack:rack:2.2.6.1
-
cpe:2.3:a:rack:rack:2.2.6.2
-
cpe:2.3:a:rack:rack:2.2.6.3
-
cpe:2.3:a:rack:rack:2.2.6.4
-
cpe:2.3:a:rack:rack:2.2.7
-
cpe:2.3:a:rack:rack:2.2.8
-
cpe:2.3:a:rack:rack:2.2.8.1
-
cpe:2.3:a:rack:rack:2.2.9
-
cpe:2.3:a:rack:rack:3.0.0
-
cpe:2.3:a:rack:rack:3.0.1
-
cpe:2.3:a:rack:rack:3.0.10
-
cpe:2.3:a:rack:rack:3.0.12
-
cpe:2.3:a:rack:rack:3.0.13
-
cpe:2.3:a:rack:rack:3.0.14
-
cpe:2.3:a:rack:rack:3.0.15
-
cpe:2.3:a:rack:rack:3.0.16
-
cpe:2.3:a:rack:rack:3.0.17
-
cpe:2.3:a:rack:rack:3.0.18
-
cpe:2.3:a:rack:rack:3.0.2
-
cpe:2.3:a:rack:rack:3.0.3
-
cpe:2.3:a:rack:rack:3.0.4
-
cpe:2.3:a:rack:rack:3.0.4.1
-
cpe:2.3:a:rack:rack:3.0.4.2
-
cpe:2.3:a:rack:rack:3.0.5
-
cpe:2.3:a:rack:rack:3.0.6
-
cpe:2.3:a:rack:rack:3.0.6.1
-
cpe:2.3:a:rack:rack:3.0.7
-
cpe:2.3:a:rack:rack:3.0.8
-
cpe:2.3:a:rack:rack:3.0.9
-
cpe:2.3:a:rack:rack:3.0.9.1
-
cpe:2.3:a:rack:rack:3.1.0
-
cpe:2.3:a:rack:rack:3.1.1
-
cpe:2.3:a:rack:rack:3.1.10
-
cpe:2.3:a:rack:rack:3.1.11
-
cpe:2.3:a:rack:rack:3.1.12
-
cpe:2.3:a:rack:rack:3.1.13
-
cpe:2.3:a:rack:rack:3.1.14
-
cpe:2.3:a:rack:rack:3.1.15
-
cpe:2.3:a:rack:rack:3.1.16
-
cpe:2.3:a:rack:rack:3.1.17
-
cpe:2.3:a:rack:rack:3.1.18
-
cpe:2.3:a:rack:rack:3.1.2
-
cpe:2.3:a:rack:rack:3.1.3
-
cpe:2.3:a:rack:rack:3.1.4
-
cpe:2.3:a:rack:rack:3.1.5
-
cpe:2.3:a:rack:rack:3.1.6
-
cpe:2.3:a:rack:rack:3.1.7
-
cpe:2.3:a:rack:rack:3.1.8
-
cpe:2.3:a:rack:rack:3.1.9
-
cpe:2.3:a:rack:rack:3.2.0
-
cpe:2.3:a:rack:rack:3.2.1
-
cpe:2.3:a:rack:rack:3.2.2
-
cpe:2.3:a:rack:rack:3.2.3