Bug 1964874 (CVE-2021-29509)

Summary: CVE-2021-29509 rubygem-puma: incomplete fix for CVE-2019-16770 allows Denial of Service (DoS)
Product: [Other] Security Response Reporter: Marian Rehak <mrehak>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED ERRATA QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: akarol, amackenz, amasferr, bbuckingham, bcourt, bkearney, btotty, chazlett, dmetzger, drieden, ehelms, gmccullo, gtanzill, hvyas, jaruga, jhardy, jsherril, lzap, mhulan, mkudlej, mmccune, myarboro, nmoumoul, obarenbo, orabin, pcreech, rchan, rjerrido, roliveri, ruby-packagers-sig, simaishi, smallamp, sokeeffe, tjochec, vondruch
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: puma 4.3.8, puma 5.3.1 Doc Type: If docs needed, set a value
Doc Text:
A flaw was found in rubygem-puma. 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.
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-11-13 15:48:35 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1964875, 1964966, 1965333    
Bug Blocks: 1964876, 1997390    

Description Marian Rehak 2021-05-26 09:07:20 UTC
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.

External Reference:

https://github.com/puma/puma/security/advisories/GHSA-q28m-8xjw-8vr5

Comment 1 Marian Rehak 2021-05-26 09:07:56 UTC
Created rubygem-puma tracking bugs for this issue:

Affects: fedora-all [bug 1964875]

Comment 9 errata-xmlrpc 2021-11-16 14:08:12 UTC
This issue has been addressed in the following products:

  Red Hat Satellite 6.10 for RHEL 7

Via RHSA-2021:4702 https://access.redhat.com/errata/RHSA-2021:4702