Skip to content
Fencer Vulns
high 7.1

CVE-2019-16785 json

HTTP Request Smuggling: LF vs CRLF handling in Waitress

published 2019-12-20 6 y ago modified 2026-09-10 1 mo ago also GHSA-pg36-wpm5-g57p , PYSEC-2019-136 , EUVD-2019-0156

cvss
7.1
version 3.1, CNA
cisa kev
Not listed
not in CISA's catalog
epss
2.5%
EPSS 2.5% chance of exploitation in 30 days, percentile 85%
public exploits
0
none known

Summary

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.

Patch / fix

  • pypi waitress 1.4.0
  • waitress Debian 14, Debian 13, Debian 12 1.4.1-1

debian advisories DEBIAN-CVE-2019-16785

  • python-waitress openstack 15 1.4.2-1.el8ost
  • python3-waitress openstack 15 1.4.2-1.el8ost

red hat advisories RHSA-2020:0720

  • python-waitress SLE Module for Package Hub 15 SP2, SLE Module for Package Hub 15 SP1, SLE Module for Basesystem 15 SP2 +6 more 1.4.3-3.3.1
  • kibana OpenStack Cloud Crowbar 9, OpenStack Cloud 9 4.6.3-4.3.2
  • grafana OpenStack Cloud Crowbar 9, OpenStack Cloud 9 6.2.5-3.12.2
  • ansible1 OpenStack Cloud 9 1.9.6-9.7.2
  • ardana-mq OpenStack Cloud 9 9.0+git.1593618110.cbd1a37-3.16.2
  • crowbar-core OpenStack Cloud Crowbar 9 6.0+git.1594619891.b75a61d0d-3.25.5
  • rubygem-puma OpenStack Cloud Crowbar 9 2.16.0-4.9.1
  • ardana-glance OpenStack Cloud 9 9.0+git.1593631708.9354a78-3.13.2

suse advisories SUSE-SU-2020:3292-1SUSE-SU-2020:3269-1SUSE-RU-2020:2161-1SUSE-RU-2020:2072-1SUSE-SU-2020:1901-1

  • python-waitress openSUSE Leap 15.1 1.4.3-lp151.3.3.1
  • python-waitress openSUSE Leap 15.2 1.4.3-lp152.4.3.1

opensuse advisories openSUSE-SU-2020:1922-1openSUSE-SU-2020:1911-1

  • py3-waitress Alpine 3.24, Alpine 3.23, Alpine 3.22 +11 more 1.4.0-r0

alpine advisories ALPINE-CVE-2019-16785

Alpine secdb © Alpine Linux, from https://secdb.alpinelinux.org via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0

Vendor advisories

What the vendors themselves say about their products: affected, fixed or not affected, and what to do.

red hat product security vex CVE-2019-16785 updated cvss 7.1

waitress: HTTP request smuggling through LF vs CRLF handling

  • Red Hat Ceph Storage 3 python-waitress Red Hat Ceph Storage 4 python-waitress, python3-waitress
    affected: no fix available “Fix deferred”
  • Red Hat OpenStack Platform 13 (Queens) python-waitress, python2-waitress
    affected: no fix planned “Will not fix”
  • Red Hat OpenStack Platform 16 (Train) python-waitress, python3-waitress
    affected: no fix available
  • Red Hat Quay v3 quay/quay-rhel8 v3.4.0-51, quay/clair-rhel8 v3.4.0-25, quay/quay-builder-rhel8 v3.4.0-18, quay/quay-operator-bundle v3.4.0-89, quay/quay-operator-rhel8 v3.4.0-132, quay/quay-bridge-operator-bundle v3.4.0-3, +5 more
    fixed: vendor fix RHSA-2021:0420
  • Red Hat OpenStack Platform 15.0 python-waitress 1.4.2-1.el8ost, python3-waitress 1.4.2-1.el8ost
    fixed: vendor fix RHSA-2020:0720

Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf

Exploit prediction

2.54% chance of exploitation in the next 30 days, higher than 85% of all scored CVEs (FIRST EPSS, 2026-11-08).

Exploits and checks

  • github.com https://github.com/Pylons/waitress/security/advisories/GHSA-pg36-wpm5-g57p referenced PoC, tagged "exploit" by a source, unverified

CVSS scores

assigned by version score vector
CNA 3.1 7.1 CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:L/A:N
NVD 3.1 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
NVD 2.0 5.0 AV:N/AC:L/Au:N/C:N/I:P/A:N
GitHub 3.1 7.1 CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:L/A:N

Affected packages

ecosystem package affected fixed in
pypi waitress
<1.4.0
1.4.0

Affected products

  • Pylons Waitress

Classification

Weakness
  • CWE-444 Inconsistent Interpretation of HTTP Requests

References

Sources

Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.