CVE-2021-29509 json
Keepalive Connections Causing Denial Of Service in puma
published 2021-05-11 5 y ago modified 2026-07-08 4 mo ago also GHSA-q28m-8xjw-8vr5 , EUVD-2021-1158
- cvss
- 7.5
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 1.6%
- EPSS 1.6% chance of exploitation in 30 days, percentile 75%
- public exploits
- 0
- none known
Summary
Puma is a concurrent HTTP 1.1 server for Ruby/Rack applications. The fix for CVE-2019-16770 was incomplete. The original fix only protected existing connections that had already been accepted from having their requests starved by greedy persistent-connections saturating all threads in the same process. However, new connections may still be starved by greedy persistent-connections saturating all threads in all processes in the cluster. A `puma` server which received more concurrent `keep-alive` connections than the server had threads in its threadpool would service only a subset of connections, denying service to the unserved connections. This problem has been fixed in `puma` 4.3.8 and 5.3.1. Setting `queue_requests false` also fixes the issue. This is not advised when using `puma` without a reverse proxy, such as `nginx` or `apache`, because you will open yourself to slow client attacks (e.g. slowloris). The fix is very small and a git patch is available for those using unsupported versions of Puma.
Patch / fix
- rubygems puma 4.3.8, 5.3.1
- puma puma 4.3.8, 5.3.1
- puma Debian 14, Debian 13, Debian 12 4.3.8-1
debian advisories DEBIAN-CVE-2021-29509
- foreman satellite capsule 6.10, satellite 6.10 2.5.2.17-2.el7sat
- candlepin satellite 6.10 4.0.9-1.el7sat
- satellite satellite capsule 6.10, satellite 6.10 6.10.0-3.el7sat
- python-ecdsa satellite capsule 6.10, satellite 6.10 0.13.3-2.el7pc
- python-pyyaml satellite capsule 6.10, satellite 6.10 5.4.1-1.el7pc
- python3-ecdsa satellite capsule 6.10, satellite 6.10 0.13.3-2.el7pc
- python-aiohttp satellite capsule 6.10, satellite 6.10 3.7.4-1.el7pc
- python-urllib3 satellite capsule 6.10, satellite 6.10 1.26.5-1.el7pc
red hat advisories RHSA-2021:4702
- rubygem-puma SLE High Availability Extension 15 SP3, SLE High Availability Extension 15 SP2, SLE High Availability Extension 15 SP1 +3 more 4.3.11-150000.3.6.2
- rubygem-puma OpenStack Cloud Crowbar 9 2.16.0-4.12.1
- rubygem-puma OpenStack Cloud Crowbar 8 2.16.0-3.12.1
suse advisories SUSE-SU-2022:1515-1SUSE-SU-2021:2914-1SUSE-SU-2021:2761-1
- rubygem-puma-5 openSUSE Tumbleweed 5.6.5-1.1
- ruby3.2-rubygem-puma-5 openSUSE Tumbleweed 5.6.5-1.7
- rubygem-puma-5 openSUSE Tumbleweed 5.6.8-1.1
opensuse advisories openSUSE-SU-2024:12592-1openSUSE-SU-2024:13166-1openSUSE-SU-2024:13721-1
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2021-29509 updated cvss 7.5
rubygem-puma: incomplete fix for CVE-2019-16770 allows Denial of Service (DoS)
-
Red Hat CloudForms Management Engine 5 rubygem-pumaaffected: no fix planned “Will not fix”
-
Red Hat 3scale API Management Platform 2 systemaffected: no fix available
-
Red Hat Storage 3 rubygem-pumaaffected: no fix planned “Will not fix”
-
Red Hat Satellite 6.10 tfm-rubygem-puma 5.3.2-1.el7satfixed: vendor fix RHSA-2021:4702
-
Red Hat 3scale API Management Platform 2 3scale-amp-zync 3scale-amp-zync, 3scale-amp-backend 3scale-amp-backend Red Hat Satellite 6.10 tfm 7.0-1.el7sat, gofer 2.12.5-7.el7sat, katello 4.1.1-2.el7sat, libsolv 0.7.20-1.el7pc, receptor 0.6.4-2.el7ar, libcomps 0.1.15-1.el7pc, +581 more Red Hat Satellite Capsule 6.10 tfm 7.0-1.el7sat, katello 4.1.1-2.el7sat, libsolv 0.7.20-1.el7pc, libcomps 0.1.15-1.el7pc, python-rq 1.8.1-1.el7pc, python-idna 2.10-1.el7pc, +355 morenot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
Exploit prediction
1.60% chance of exploitation in the next 30 days, higher than 75% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
| NVD | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
| NVD | 2.0 | 5.0 | AV:N/AC:L/Au:N/C:N/I:N/A:P |
| GitHub | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| rubygems | puma | <4.3.8 >=5.0.0, <5.3.1 |
4.3.8 5.3.1 |
Affected products
- puma puma
Classification
References
-
github.com
/puma/puma/security/advisories/GHSA-q28m-8xjw-8vr5
web, patch, third-party-advisory
-
gist.github.com
/nateberkopec/4b3ea5676c0d70cbb37c82d54be25837
web, patch, third-party-advisory
-
security.gentoo.org
/glsa/202208-28
vendor-advisory, web, third-party-advisory
-
github.com
/puma/puma/security/policy
web, third-party-advisory
-
rubygems.org
/gems/puma
web, product, third-party-advisory
-
lists.debian.org
/debian-lts-announce/2022/08/msg00015.html
mailing-list, web, third-party-advisory
-
nvd.nist.gov
/vuln/detail/CVE-2021-29509
advisory
-
github.com
/puma/puma
package
-
github.com
/rubysec/ruby-advisory-db/blob/master/gems/puma/CVE-2021-29509.yml
web
Sources
- CVE List CVE-2021-29509
- GitHub Advisory GHSA-q28m-8xjw-8vr5
- NVD CVE-2021-29509
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.