CVE-2026-47736
Puma PROXY Protocol v1 Parser Allows Remote Memory Exhaustion
Puma is a Ruby/Rack web server built for parallelism. From 5.5.0 until 7.2.1 and 8.0.2, when PROXY protocol v1 support is enabled, Puma reads incoming bytes into an internal buffer while waiting for CRLF to determine whether a PROXY v1 line is present, allowing an attacker that continuously sends bytes without CRLF to cause unbounded in-process memory growth and additional CPU cost from repeatedly scanning the growing buffer. This issue is fixed in versions 7.2.1 and 8.0.2.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
Puma PROXY Protocol v1 Parser Allows Remote Memory Exhaustion
Puma is a Ruby/Rack web server built for parallelism. From 5.5.0 until 7.2.1 and 8.0.2, when PROXY protocol v1 support is enabled, Puma reads incoming bytes into an internal buffer while waiting for CRLF to determine whether a PROXY v1 line is present, allowing an attacker that continuously sends bytes without CRLF to cause unbounded in-process memory growth and additional CPU cost from repeatedly scanning the growing buffer. This issue is fixed in versions 7.2.1 and 8.0.2.
- Record
CVE-2026-47736- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
EUVDEUVD-2026-44442
7.5
Puma is a Ruby/Rack web server built for parallelism. From 5.5.0 until 7.2.1 and 8.0.2, when PROXY protocol v1 support is enabled, Puma reads incoming bytes into an internal buffer while waiting for CRLF to determine whether a PROXY v1 line is present, allowing an attacker that continuously sends bytes without CRLF to cause unbounded in-process memory growth and additional CPU cost from repeatedly scanning the growing buffer. This issue is fixed in versions 7.2.1 and 8.0.2.
- Record
EUVD-2026-44442- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-qpgp-93vx-g8v8
7.5
Puma PROXY Protocol v1 Parser Allows Remote Memory Exhaustion
Impact
PROXY protocol support for Puma was added in version 5.5.0.
When PROXY protocol v1 support is enabled, Puma reads incoming bytes into an internal buffer. It waits for "\r\n" to determine whether a PROXY v1 line is present. If an attacker opens a TCP connection and continuously sends bytes without CRLF, Puma keeps appending to this pre-parse buffer.
This can cause unbounded in-process memory growth and additional CPU cost from repeatedly scanning the growing buffer for CRLF. A single, unauthenticated TCP connection can drive significant memory growth and may cause process/container OOM or degraded availability.
Only Puma servers using the following non-default config are affected:
set_remote_address proxy_protocol: :v1
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
- Restrict direct network access to Puma listeners using PROXY protocol:
- Only allow trusted load balancers/reverse proxies to connect.
- Block arbitrary client TCP access with firewall/security group rules.
Resources
- Record
GHSA-qpgp-93vx-g8v8- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-03
NVD
7.5
Puma is a Ruby/Rack web server built for parallelism. From 5.5.0 until 7.2.1 and 8.0.2, when PROXY protocol v1 support is enabled, Puma reads incoming bytes into an internal buffer while waiting for CRLF to determine whether a PROXY v1 line is present, allowing an attacker that continuously sends bytes without CRLF to cause unbounded in-process memory growth and additional CPU cost from repeatedly scanning the growing buffer. This issue is fixed in versions 7.2.1 and 8.0.2.
- Record
CVE-2026-47736- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
OSV
7.5
Puma PROXY Protocol v1 Parser Allows Remote Memory Exhaustion
Puma is a Ruby/Rack web server built for parallelism. From 5.5.0 until 7.2.1 and 8.0.2, when PROXY protocol v1 support is enabled, Puma reads incoming bytes into an internal buffer while waiting for CRLF to determine whether a PROXY v1 line is present, allowing an attacker that continuously sends bytes without CRLF to cause unbounded in-process memory growth and additional CPU cost from repeatedly scanning the growing buffer. This issue is fixed in versions 7.2.1 and 8.0.2.
- Record
CVE-2026-47736- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-47736
7.5
Puma is a Ruby/Rack web server built for parallelism. From 5.5.0 until 7.2.1 and 8.0.2, when PROXY protocol v1 support is enabled, Puma reads incoming bytes into an internal buffer while waiting for CRLF to determine whether a PROXY v1 line is present, allowing an attacker that continuously sends bytes without CRLF to cause unbounded in-process memory growth and additional CPU cost from repeatedly scanning the growing buffer. This issue is fixed in versions 7.2.1 and 8.0.2.
- Record
DEBIAN-CVE-2026-47736- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVGHSA-qpgp-93vx-g8v8
7.5
Puma PROXY Protocol v1 Parser Allows Remote Memory Exhaustion
Impact
PROXY protocol support for Puma was added in version 5.5.0.
When PROXY protocol v1 support is enabled, Puma reads incoming bytes into an internal buffer. It waits for "\r\n" to determine whether a PROXY v1 line is present. If an attacker opens a TCP connection and continuously sends bytes without CRLF, Puma keeps appending to this pre-parse buffer.
This can cause unbounded in-process memory growth and additional CPU cost from repeatedly scanning the growing buffer for CRLF. A single, unauthenticated TCP connection can drive significant memory growth and may cause process/container OOM or degraded availability.
Only Puma servers using the following non-default config are affected:
set_remote_address proxy_protocol: :v1
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
- Restrict direct network access to Puma listeners using PROXY protocol:
- Only allow trusted load balancers/reverse proxies to connect.
- Block arbitrary client TCP access with firewall/security group rules.
Resources
- Record
GHSA-qpgp-93vx-g8v8- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-03
OSVUBUNTU-CVE-2026-47736
7.5
Puma is a Ruby/Rack web server built for parallelism. From 5.5.0 until 7.2.1 and 8.0.2, when PROXY protocol v1 support is enabled, Puma reads incoming bytes into an internal buffer while waiting for CRLF to determine whether a PROXY v1 line is present, allowing an attacker that continuously sends bytes without CRLF to cause unbounded in-process memory growth and additional CPU cost from repeatedly scanning the growing buffer. This issue is fixed in versions 7.2.1 and 8.0.2.
- Record
UBUNTU-CVE-2026-47736- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
pumaRubyGems |
8.0.0 up to 8.0.2 | 8.0.2 |
pumaRubyGems |
5.5.0 up to 7.2.1 | 7.2.1 |
pumaDebian:12 |
before 5.6.5-3+deb12u2, plus listed versions 5.6.5-35.6.5-3+deb12u1 |
5.6.5-3+deb12u2 |
pumaDebian:13 |
All versions, plus listed versions 6.6.0-48.0.2-18.0.2-28.0.2-3 |
None known |
pumaDebian:14 |
before 8.0.2-1, plus listed versions 6.6.0-4 |
8.0.2-1 |
pumaRubyGems |
8.0.0 up to 8.0.2, plus listed versions 8.0.1 |
8.0.2 |
pumaRubyGems |
5.5.0 up to 7.2.1, plus listed versions 5.5.15.5.25.6.05.6.15.6.2 Show 31 moreShow less5.6.45.6.55.6.65.6.75.6.85.6.96.0.06.0.16.0.26.1.06.1.16.2.06.2.16.2.26.3.06.3.16.4.06.4.16.4.26.4.36.5.06.6.06.6.17.0.07.0.0.pre17.0.17.0.27.0.37.0.47.1.07.2.0 |
7.2.1 |
pumaUbuntu:Pro:20.04:LTS |
All versions, plus listed versions 3.12.0-2ubuntu13.12.0-4ubuntu13.12.4-1ubuntu23.12.4-1ubuntu2+esm13.12.4-1ubuntu2+esm2 |
None known |
pumaUbuntu:Pro:22.04:LTS |
All versions, plus listed versions 4.3.6-1ubuntu45.5.2-2ubuntu25.5.2-2ubuntu2+esm15.5.2-2ubuntu2+esm2 |
None known |
pumaUbuntu:24.04:LTS |
All versions, plus listed versions 5.6.5-4ubuntu25.6.5-4ubuntu36.4.2-4ubuntu16.4.2-4ubuntu36.4.2-4ubuntu46.4.2-4ubuntu4.3 |
None known |
pumaUbuntu:26.10 |
All versions, plus listed versions 6.6.0-4build18.0.2-3build1 |
None known |
pumaUbuntu:26.04:LTS |
All versions, plus listed versions 6.6.0-46.6.0-4build1 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| references | GitHub Advisories, OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-47736 is a high vulnerability (CVSS 7.5) in Puma, published June 8, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.35%, the 28th percentile. Fixed in puma 8.0.2.
References
github.com/puma/puma/security/advisories/GHSA-qpgp-93vx-g8v8
github.com/puma/puma/commit/439c6136d9c2275721b7864db3ee78af7c80889f
github.com/puma/puma/commit/ebe9db3929ab8299d19c8f5b41e8ef4f4b22fa58
github.com/puma/puma/releases/tag/v7.2.1
github.com/puma/puma/releases/tag/v8.0.2
github.com/rubysec/ruby-advisory-db/blob/master/gems/puma/CVE-2026-47736.yml
Show 8 moreShow less
cve.org/CVERecord?id=CVE-2026-47736
nvd.nist.gov/vuln/detail/cve-2026-47736
github.com/advisories/GHSA-qpgp-93vx-g8v8
github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47736.json
nvd.nist.gov/vuln/detail/CVE-2026-47736
security-tracker.debian.org/tracker/CVE-2026-47736
github.com/puma/puma
ubuntu.com/security/CVE-2026-47736