{"id":"CVE-2019-16785","published":"2019-12-20T23:00:25Z","modified":"2024-08-05T01:24:47Z","title":"HTTP Request Smuggling: LF vs CRLF handling in Waitress","vendor":"Pylons","product":"Waitress","tier":"tail","description":{"text":"Waitress through version 1.3.1 implemented a \"MAY\" part of the RFC7230 which states: \"Although the line terminator for the start-line and header fields is the sequence CRLF, a recipient MAY recognize a single LF as a line terminator and ignore any preceding CR.\" Unfortunately if a front-end server does not parse header fields with an LF the same way as it does those with a CRLF it can lead to the front-end and the back-end server parsing the same HTTP message in two different ways. This can lead to a potential for HTTP request smuggling/splitting whereby Waitress may see two requests while the front-end server only sees a single HTTP message. This issue is fixed in Waitress 1.4.0.","provenance":"source","from":"CVE.org"},"cvss":{"score":7.1,"severity":"HIGH","version":"3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:L/A:N","provenance":"source","from":"CVE.org CNA"},"epss":{"score":0.02537,"percentile":0.84905,"provenance":"source"},"cwes":[{"id":"CWE-444","name":"Inconsistent Interpretation of HTTP Requests"}],"references":[{"url":"https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/GVDHR2DNKCNQ7YQXISJ45NT4IQDX3LJ7/","tags":["vendor-advisory","x_refsource_FEDORA"]},{"url":"https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/LYEOTGWJZVKPRXX2HBNVIYWCX73QYPM5/","tags":["vendor-advisory","x_refsource_FEDORA"]},{"url":"https://access.redhat.com/errata/RHSA-2020:0720","tags":["vendor-advisory","x_refsource_REDHAT"]},{"url":"https://www.oracle.com/security-alerts/cpuapr2022.html","tags":["x_refsource_MISC"]},{"url":"https://docs.pylonsproject.org/projects/waitress/en/latest/#security-fixes","tags":["x_refsource_MISC"]},{"url":"https://github.com/Pylons/waitress/security/advisories/GHSA-pg36-wpm5-g57p","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/Pylons/waitress/commit/8eba394ad75deaf9e5cd15b78a3d16b12e6b0eba","tags":["x_refsource_MISC"]},{"url":"https://lists.debian.org/debian-lts-announce/2022/05/msg00011.html","tags":["mailing-list","x_refsource_MLIST"]}],"priority":{"score":22.0,"factors":[{"name":"EPSS percentile","points":16.98},{"name":"CVSS severity","points":4.97}]},"vendorSlug":"pylons","affectedVersions":[{"vendor":"Pylons","product":"Waitress","versions":[">= <= 1.3.1, <= 1.3.1"]}],"affected":[{"ecosystem":"PyPI","package":"waitress","vulnerableRanges":["<1.4.0"],"patched":["1.4.0"],"from":["GHSA-pg36-wpm5-g57p","PYSEC-2019-136"],"provenance":"source"}],"euvd":{"id":"EUVD-2019-0156","exploited":false,"provenance":"source"},"lineage":{"familyId":"fam-pylons-waitress-cve-2019-16785","parents":[{"from":"CVE-2019-16786","to":"CVE-2019-16785","relation":"successor","confidence":"high","kind":"lineage","orderedBy":"description","evidence":[{"kind":"version-step","provenance":"source","package":"PyPI:waitress","fromFixed":"1.3.1","toFixed":"1.4.0","daysApart":0},{"kind":"same-code","provenance":"machine","files":["waitress/parser.py","waitress/receiver.py","waitress/utilities.py"],"commits":["https://github.com/Pylons/waitress/commit/8eba394ad75deaf9e5cd15b78a3d16b12e6b0eba","https://github.com/Pylons/waitress/commit/f11093a6b3240fc26830b6111e826128af7771c3"],"basis":"shared function","functions":["__len__","get_header_lines","getbuf","parse_header","received"]}]}],"children":[{"from":"CVE-2019-16785","to":"CVE-2019-16789","relation":"related","confidence":"medium","kind":"lineage","evidence":[{"kind":"same-code","provenance":"machine","files":["waitress/parser.py","waitress/utilities.py"],"commits":["https://github.com/Pylons/waitress/commit/8eba394ad75deaf9e5cd15b78a3d16b12e6b0eba","https://github.com/Pylons/waitress/commit/11d9e138125ad46e951027184b13242a3c1de017","https://github.com/Pylons/waitress/commit/ddb65b489d01d696afa1695b75fdd5df3e4ffdf8"],"basis":"shared function","functions":["get_header_lines","parse_header"]}]},{"from":"CVE-2019-16785","to":"CVE-2019-16792","relation":"related","confidence":"medium","kind":"lineage","evidence":[{"kind":"same-code","provenance":"machine","files":["waitress/parser.py"],"commits":["https://github.com/Pylons/waitress/commit/8eba394ad75deaf9e5cd15b78a3d16b12e6b0eba","https://github.com/Pylons/waitress/commit/575994cd42e83fd772a5f7ec98b2c56751bd3f65"],"basis":"shared function","functions":["parse_header"]}]}],"packageHistory":[{"cve":"CVE-2019-16785","published":"2019-12-20","fixed":"1.4.0","kev":false},{"cve":"CVE-2019-16786","published":"2019-12-20","fixed":"1.4.0","kev":false},{"cve":"CVE-2019-16792","published":"2020-01-22","fixed":"1.4.0","kev":false},{"cve":"CVE-2019-16789","published":"2019-12-26","fixed":"1.4.2","kev":false}],"package":"PyPI:waitress"}}