Skip to content
Fencer Vulns
high 7.5

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-puma
    affected: no fix planned “Will not fix”
  • Red Hat 3scale API Management Platform 2 system
    affected: no fix available
  • Red Hat Storage 3 rubygem-puma
    affected: no fix planned “Will not fix”
  • Red Hat Satellite 6.10 tfm-rubygem-puma 5.3.2-1.el7sat
    fixed: 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 more
    not 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

Weakness

References

Sources

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.