原始 OSV JSON{
"id": "GHSA-q28m-8xjw-8vr5",
"aliases": [
"CVE-2021-29509"
],
"details": "This vulnerability is related to [CVE-2019-16770](https://github.com/puma/puma/security/advisories/GHSA-7xx3-m584-x994).\n\n### Impact\n\nThe 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.\n\nA `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.\n\n### Patches\n\nThis problem has been fixed in `puma` 4.3.8 and 5.3.1.\n\n### Workarounds\n\nSetting `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](https://en.wikipedia.org/wiki/Slowloris_(computer_security))).\n\nThe fix is very small. [A git patch is available here](https://gist.github.com/nateberkopec/4b3ea5676c0d70cbb37c82d54be25837) for those using [unsupported versions](https://github.com/puma/puma/security/policy#supported-versions) of Puma.\n\n### For more information\n\nIf you have any questions or comments about this advisory:\n\n* Open an issue in [Puma](https://github.com/puma/puma).\n* To report problems with this fix or to report another vulnerability, see [our security policy.](https://github.com/puma/puma/security/policy)\n\n### Acknowledgements\n\nThank you to @MSP-Greg, @wjordan and @evanphx for their review on this issue. \n\nThank you to @ioquatix for providing a modified fork of `wrk` which made debugging this issue much easier.",
"summary": "Puma's Keepalive Connections Causing Denial Of Service",
"affected": [
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "4.3.8"
}
]
}
],
"package": {
"name": "puma",
"ecosystem": "RubyGems"
},
"database_specific": {
"last_known_affected_version_range": "<= 4.3.7"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.0.0"
},
{
"fixed": "5.3.1"
}
]
}
],
"package": {
"name": "puma",
"ecosystem": "RubyGems"
},
"database_specific": {
"last_known_affected_version_range": "<= 5.3.0"
}
}
],
"modified": "2023-05-16T16:19:44Z",
"severity": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
}
],
"published": "2021-05-18T01:27:15Z",
"references": [
{
"url": "https://github.com/puma/puma/security/advisories/GHSA-q28m-8xjw-8vr5",
"type": "WEB"
},
{
"url": "https://nvd.nist.gov/vuln/detail/CVE-2021-29509",
"type": "ADVISORY"
},
{
"url": "https://gist.github.com/nateberkopec/4b3ea5676c0d70cbb37c82d54be25837",
"type": "WEB"
},
{
"url": "https://github.com/puma/puma",
"type": "PACKAGE"
},
{
"url": "https://github.com/puma/puma/security/policy",
"type": "WEB"
},
{
"url": "https://github.com/rubysec/ruby-advisory-db/blob/master/gems/puma/CVE-2021-29509.yml",
"type": "WEB"
},
{
"url": "https://lists.debian.org/debian-lts-announce/2022/08/msg00015.html",
"type": "WEB"
},
{
"url": "https://rubygems.org/gems/puma",
"type": "WEB"
},
{
"url": "https://security.gentoo.org/glsa/202208-28",
"type": "WEB"
}
],
"schema_version": "1.4.0",
"database_specific": {
"cwe_ids": [
"CWE-400"
],
"severity": "HIGH",
"github_reviewed": true,
"nvd_published_at": "2021-05-11T17:15:00Z",
"github_reviewed_at": "2021-05-18T01:26:55Z"
}
}