Security advisory
In Puma before versions 3.12.2 and 4.3.1, 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. This vulnerability is patched in Puma 4.3.1 and 3.12.2.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2019-16770
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 11:02 UTC · Revision 1
Source evidence
In Puma before versions 3.12.2 and 4.3.1, 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. This vulnerability is patched in Puma 4.3.1 and 3.12.2.
osv:CVE-2019-16770
Complete source record
{
"id": "df4e15e3ffceeffdf392f1b35ed8ee6f2aef11f69ffc979d2dbcdcb3aa20c6f7",
"url": "https://osv.dev/vulnerability/CVE-2019-16770",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "CVE-2019-16770",
"summary": "In Puma before versions 3.12.2 and 4.3.1, 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. This vulnerability is patched in Puma 4.3.1 and 3.12.2.",
"evidence": "osv:CVE-2019-16770",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2019-16770",
"aliases": [
"CVE-2019-16770",
"GHSA-7xx3-m584-x994"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/puma/puma",
"type": "GIT",
"events": [
{
"introduced": "f0762d1216c825009a5d3d0a13d1d3ec1ff95682"
},
{
"fixed": "bb29fc7fe8f822d0f72706a1ae86e49af3476777"
},
{
"introduced": "f5d7600e4e4d9104803b5f0f5f596f8dc45fc191"
},
{
"fixed": "2986bc4ab5e03072d4c09739649c5c9221b13c8d"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:puma:puma:*:*:*:*:*:ruby:*:*",
"range": [
{
"introduced": "3.0.0"
},
{
"fixed": "3.12.2"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:puma:puma:*:*:*:*:*:ruby:*:*",
"range": [
{
"introduced": "4.0.0"
},
{
"fixed": "4.3.1"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"v3.12.1",
"v4.3.0",
"v4.2.1",
"v4.2.0",
"v4.1.0",
"v4.0.1",
"v4.0.0",
"v3.12.0",
"v3.11.4",
"v3.11.3",
"v3.11.2",
"v3.11.1",
"v3.11.0",
"v3.10.0",
"v3.9.1",
"v3.9.0",
"v3.8.0",
"v3.7.1",
"v3.6.0",
"v3.5.2",
"v3.5.1",
"v3.5.0",
"v3.4.0",
"v3.3.0",
"v3.2.0",
"v3.1.1",
"v3.1.0",
"v3.0.2",
"v3.0.1",
"v3.0.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2019-16770.json"
}
}
],
"modified": "2026-10-20T10:52:27.540054520Z",
"provider": "osv",
"references": [
"https://github.com/puma/puma/security/advisories/GHSA-7xx3-m584-x994",
"https://lists.debian.org/debian-lts-announce/2022/05/msg00034.html"
],
"provider_metadata": {
"unresolved_ranges": [
{
"cpes": [
"cpe:2.3:o:debian:debian_linux:9.0:*:*:*:*:*:*:*"
],
"vendor_product": "debian:debian_linux",
"extracted_events": [
{
"range": [
{
"introduced": "9.0"
},
{
"last_affected": "9.0"
}
],
"source": "CPE_STRING"
}
]
}
]
}
},
"related_cves": [
{
"value": "CVE-2019-16770",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 383654,
"published_at": "2019-12-05T20:15:10.093+00:00"
}