GHSA-2vqw-3mp8-cgmx CVE-2026-47737
Puma PROXY Protocol v1 Accepts Repeated Protocol Headers on Persistent Connections
- Severity
- 7.5 / 10
- High · CVSS 3.1
- Exploit chance (EPSS)
- 0.18%
- Chance of exploitation in the next 30 days. Higher than 7.31% of scored vulnerabilities.
- Known exploited
- No
- Not in CISA's catalog
- Weakness
- CWE-290 Authentication Bypass by Spoofing
- CWE-345 Insufficient Verification of Data Authenticity
- Fix
8.0.2- Upgrade puma to this version or later
Description
Impact
Puma is vulnerable to source IP spoofing when set_remote_address proxy_protocol: :v1 is enabled and persistent connections are used.
PROXY protocol v1 is a connection-level protocol. Support was added to Puma in v5.5.0. A proxy sends one PROXY header at the beginning of a TCP connection, before any HTTP data. Puma incorrectly re-parsed PROXY protocol headers after each keep-alive request on the same connection. An attacker able to send HTTP requests through a trusted proxy could therefore inject a second PROXY header between HTTP requests. Puma would treat the injected header as authoritative for the next request and overwrite REMOTE_ADDR.
This can mislead applications or middleware that use REMOTE_ADDR for security decisions, rate limiting, auditing, or allow/deny lists.
Only deployments that explicitly enable PROXY protocol v1 are affected, and will have set:
set_remote_address proxy_protocol: :v1
Puma's default configuration is not affected. Deployments that do not use persistent connections to Puma are also not expected to be affected by this issue.
Patches
Users should upgrade to versions 7.2.1 or 8.0.2.
Workarounds
Disable PROXY protocol v1 parsing if it is not required:
# remove/comment this:
# set_remote_address proxy_protocol: :v1
Users can also disable persistent connections to Puma, for example:
enable_keep_alives false
References
Affected versions
RubyGems
How to fix
Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.
puma RubyGems → 8.0.2
- bundler
bundle update puma # Gemfile: gem "puma", ">= 8.0.2"
Severity breakdown
CVSS 3.1 7.5
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
- Attack vector
- Network
- Attack complexity
- Low
- Privileges required
- None
- User interaction
- None
- Scope
- Unchanged
- Confidentiality
- None
- Integrity
- High
- Availability
- None
Weakness
CWE-290: Authentication Bypass by Spoofing
This attack-focused weakness is caused by incorrectly implemented authentication schemes that are subject to spoofing attacks.
CWE-345: Insufficient Verification of Data Authenticity
The product does not sufficiently verify the origin or authenticity of data, in a way that causes it to accept invalid data.
References
Packages
Other links
- github.com/puma/puma/security/advisories/GHSA-2vqw-3mp8-cgmx
- github.com/rubysec/ruby-advisory-db/blob/master/gems/puma/CVE-2026-47737.yml
- cve.org/CVERecord/SearchResults
- github.com/puma/puma/commit/439c6136d9c2275721b7864db3ee78af7c80889f
- github.com/puma/puma/commit/ebe9db3929ab8299d19c8f5b41e8ef4f4b22fa58
- github.com/puma/puma/pull/3944
- github.com/puma/puma/pull/3947
- github.com/puma/puma/releases/tag/v7.2.1
- github.com/puma/puma/releases/tag/v8.0.2
Timeline
- Published
- Last updated by the source
- Latest EPSS score
Related advisories
| Advisory | Severity | Why it's related |
|---|---|---|
| GHSA-qpgp-93vx-g8v8 Puma PROXY Protocol v1 Parser Allows Remote Memory Exhaustion | High | Also affects puma |
| GHSA-9hf4-67fc-4vf4 Puma's header normalization allows for client to clobber proxy set headers | Medium | Also affects puma |
| GHSA-c2f4-cvqm-65w2 Puma HTTP Request/Response Smuggling vulnerability | High | Also affects puma |
| GHSA-68xg-gqqm-vgj8 Puma HTTP Request/Response Smuggling vulnerability | Critical | Also affects puma |
| GHSA-h99w-9q5r-gjq9 Puma vulnerable to HTTP Request Smuggling | Critical | Also affects puma |
| GHSA-rmj8-8hhh-gv5h Puma used with Rails may lead to Information Exposure | High | Also affects puma |
| GHSA-48w2-rm65-62xx Puma with proxy which forwards LF characters as line endings could allow HTTP request smuggling | Low | Also affects puma |
| GHSA-q28m-8xjw-8vr5 Puma's Keepalive Connections Causing Denial Of Service | High | Also affects puma |
MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.
Check your repos with MergeHarbor