CVE-2019-16792

7.1 HIGH

📋 TL;DR

CVE-2019-16792 is an HTTP request smuggling vulnerability in Waitress web server that allows attackers to bypass security controls by sending duplicate Content-Length headers. This affects all systems running Waitress versions 1.3.1 and earlier, potentially enabling attackers to poison caches, bypass authentication, or perform other attacks.

💻 Affected Systems

Products:
  • Waitress
Versions: All versions through 1.3.1
Operating Systems: All platforms running Waitress
Default Config Vulnerable: ⚠️ Yes
Notes: All deployments using vulnerable Waitress versions are affected regardless of configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could poison web caches, bypass authentication mechanisms, perform cross-user attacks, or smuggle requests to backend systems that interpret them differently.

🟠

Likely Case

Cache poisoning leading to stored XSS, authentication bypass for protected endpoints, or request smuggling to backend applications.

🟢

If Mitigated

Limited impact with proper network segmentation, WAF protection, and updated systems.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires sending specially crafted HTTP requests with duplicate Content-Length headers.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.4.0 and later

Vendor Advisory: https://github.com/Pylons/waitress/security/advisories/GHSA-4ppp-gpcr-7qf6

Restart Required: Yes

Instructions:

1. Update Waitress to version 1.4.0 or later using pip: pip install --upgrade waitress>=1.4.0
2. Restart all Waitress services
3. Verify the update with: waitress-serve --version

🔧 Temporary Workarounds

WAF/Proxy Filtering

all

Configure web application firewalls or reverse proxies to reject requests with duplicate Content-Length headers.

🧯 If You Can't Patch

  • Deploy a reverse proxy or WAF that can detect and block duplicate Content-Length headers
  • Implement network segmentation to isolate vulnerable Waitress instances from critical backend systems

🔍 How to Verify

Check if Vulnerable:

Check Waitress version: waitress-serve --version | grep -E '1\.(0|1|2|3)\.[0-9]+'

Check Version:

waitress-serve --version

Verify Fix Applied:

Confirm version is 1.4.0 or higher: waitress-serve --version | grep -E '1\.(4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20)\.[0-9]+'

📡 Detection & Monitoring

Log Indicators:

  • Multiple Content-Length headers in single requests
  • Malformed HTTP requests
  • Unexpected request processing errors

Network Indicators:

  • HTTP requests with duplicate Content-Length headers
  • Abnormal request/response patterns

SIEM Query:

source="waitress.log" AND "Content-Length" AND (duplicate OR multiple OR "Content-Length, Content-Length")

🔗 References

📤 Share & Export