A poorly-behaved client could use keepalive requests to monopolize Puma's reactor and create a denial of service attack
Description
Published to the GitHub Advisory Database
Dec 5, 2019
Published by the National Vulnerability Database
Dec 5, 2019
Reviewed
Jun 16, 2020
Last updated
May 4, 2023
Keepalive thread overload/DoS
Impact
A poorly-behaved client could use keepalive requests to monopolize Puma's reactor and create a denial of service attack.
If more keepalive connections to Puma are opened than there are threads available, additional connections will wait permanently if the attacker sends requests frequently enough.
Patches
This vulnerability is patched in Puma 4.3.1 and 3.12.2.
Workarounds
Reverse proxies in front of Puma could be configured to always allow less than X keepalive connections to a Puma cluster or process, where X is the number of threads configured in Puma's thread pool.
For more information
If you have any questions or comments about this advisory:
References