Skip to content
OpenAdvisories
Medium · 5.4 Public exploit CVE-2024-45614 EUVD-2024-2761GHSA-9hf4-67fc-4vf4

Header normalization allows for client to clobber proxy set headers in Puma

Published Sep 19, 2024 · Updated Nov 3, 2025 · Assigned by GitHub_M

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

VendorProductAffectedFixed
puma puma >= 6.0.0, < 6.4.3, < 5.6.9 —

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 puma 6.4.3-1 —
Debian 13 puma 6.4.3-1 —
Debian 12 puma 5.6.5-3+deb12u1 —
Debian 11 puma 4.3.8-1+deb11u3 DLA-3947-1
ReleasePackageFixed inAdvisory
Ubuntu 24.04 LTS puma 6.4.2-4ubuntu4.3 USN-7031-1
Show 2 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu Pro 22.04 LTS puma 5.5.2-2ubuntu2+esm2 USN-7031-2
Ubuntu Pro 20.04 LTS puma 3.12.4-1ubuntu2+esm2 USN-7031-2
ReleasePackageFixed inAdvisory
SLES 15 SP7 rubygem-puma 5.6.9-150600.18.3.1 SUSE-SU-2025:03467-1
SLES 15 SP6 rubygem-puma 5.6.9-150600.18.3.1 SUSE-SU-2025:03467-1
SLES 15 SP5 rubygem-puma 4.3.12-150000.3.15.1 SUSE-SU-2025:03466-1, SUSE-SU-2024:3644-1
SLES 15 SP4 rubygem-puma 4.3.12-150000.3.15.1 SUSE-SU-2025:03466-1, SUSE-SU-2024:3644-1
SLES 15 SP3 rubygem-puma 4.3.12-150000.3.15.1 SUSE-SU-2025:03466-1, SUSE-SU-2024:3644-1
Show 1 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
SLES 15 SP2 rubygem-puma 4.3.12-150000.3.15.1 SUSE-SU-2024:3644-1
ReleasePackageFixed inAdvisory
openSUSE Tumbleweed rubygem-puma 6.4.3-1.1 openSUSE-SU-2026:10357-1, openSUSE-SU-2025:15123-1, openSUSE-SU-2024:14474-1
openSUSE Leap 15.6 rubygem-puma 5.6.9-150600.18.3.1 SUSE-SU-2025:03467-1
openSUSE Leap 15.5 rubygem-puma 4.3.12-150000.3.15.1 SUSE-SU-2024:3644-1

Wolfi

ReleasePackageFixed inAdvisory
Wolfi rolling gitlab-cng-18.2 18.2.1-r1 —
Wolfi rolling ruby3.2-puma 6.4.3-r0 —

Public exploits

Exploit or proof-of-concept code for this vulnerability is publicly available, which lowers the bar for attackers. Treat it as a reason to patch sooner.

Third-party code, not reviewed by us. Public PoCs are sometimes fake or contain malware. Read the code first and run it only in an isolated lab, against systems you are authorised to test.

GitHub 1 repository

Sources: PoC-in-GitHub, Metasploit Framework, Exploit-DB — updated daily. Only links are listed; no exploit code is hosted here.

Affected packages

EcosystemPackageAffectedFixedRecord
RubyGems puma < 5.6.9 5.6.9 GHSA-9hf4-67fc-4vf4
RubyGems puma >= 6.0.0, < 6.4.3 6.4.3 GHSA-9hf4-67fc-4vf4

Advisories 9

References