What’s Vulnerable › Vulnerabilities
CVE-2024-45614: Header normalization allows for client to clobber proxy set headers in Puma
- Severity: medium (CVSS 5.4 v3.1)
- Exploited in the wild: not listed in CISA KEV
- EPSS: 0.6% probability of exploitation in the next 30 days
- Public exploit or detection template: none known
- Published: 2024-09-19 · updated 2026-06-17
- Weakness: CWE-639
Description
Puma is a Ruby/Rack web server built for parallelism. In affected versions clients could clobber values set by intermediate proxies (such as X-Forwarded-For) by providing a underscore version of the same header (X-Forwarded_For). Any users relying on proxy set variables is affected. v6.4.3/v5.6.9 now discards any headers using underscores if the non-underscore version also exists. Effectively, allowing the proxy defined headers to always win. Users are advised to upgrade. Nginx has a underscores_in_headers configuration variable to discard these headers at the proxy level as a mitigation. Any users that are implicitly trusting the proxy defined headers for security should immediately cease doing so until upgraded to the fixed versions.
Affected products
- puma: before 5.6.9; from 6.0.0 before 6.4.3 — fixed in 5.6.9, 6.4.3
- Rubygems Puma: before 5.6.9; from 6.0.0 before 6.4.3; 0.8.0, 0.8.1, 0.8.2, 0.9.0, 0.9.1, 0.9.2 (+161) — fixed in 5.6.9, 6.4.3
How to fix
Upgrade to a fixed version: puma 5.6.9, 6.4.3; Rubygems Puma 5.6.9, 6.4.3. Check the vendor advisory for mitigations.
References
- https://github.com/puma/puma/security/advisories/GHSA-9hf4-67fc-4vf4
- https://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers
- https://lists.debian.org/debian-lts-announce/2024/11/msg00004.html
Get alerted when CVE-2024-45614 or the next vulnerability affects your stack