Waitress through version 1.3.1 allows request smuggling by sending the Content-Length header twice. Waitress would header fold a double Content-Length header and due to being unable to cast the now comma separated value to an integer would set the Content-Length to 0 internally. If two Content-Length headers are sent in a single request, Waitress would treat the request as having no body, thereby treating the body of the request as a new request in HTTP pipelining. This issue is fixed in Waitress 1.4.0.
References
- https://github.com/Pylons/waitress/security/advisories/GHSA-4ppp-gpcr-7qf6
- https://nvd.nist.gov/vuln/detail/CVE-2019-16792
- https://github.com/Pylons/waitress/commit/575994cd42e83fd772a5f7ec98b2c56751bd3f65
- https://docs.pylonsproject.org/projects/waitress/en/latest/#security-fixes
- https://lists.debian.org/debian-lts-announce/2022/05/msg00011.html
- https://www.oracle.com/security-alerts/cpuapr2022.html
- https://github.com/advisories/GHSA-j7j6-7hfx-5522