When a remote client closes the connection before waitress has had the opportunity to call getpeername()
waitress won't correctly clean up the connection leading to the main thread attempting to write to a socket that no longer exists, but not removing it from the list of sockets to attempt to process. This leads to a busy-loop calling the write function.
A remote attacker could run waitress out of available sockets with very little resources required.
Waitress 3.0.1 contains fixes that remove the race condition.
No work-around.
{ "nvd_published_at": "2024-10-29T15:15:12Z", "cwe_ids": [ "CWE-772" ], "severity": "HIGH", "github_reviewed": true, "github_reviewed_at": "2024-10-29T14:33:00Z" }