CVE-2026-71554: HTTP Request Smuggling via Duplicate Host Headers in h2 Protocol Stack
Vulnerability ID: CVE-2026-71554
CVSS Score: 5.3
Published: 2026-08-06
A protocol-parsing vulnerability in the pure-Python HTTP/2 library 'h2' (versions <= 4.4.0) allows unauthenticated remote attackers to perform HTTP Request Smuggling (CWE-444). The vulnerability exists because the library does not validate the uniqueness of 'Host' headers in incoming HTTP/2 request streams. When an upstream gateway parses such requests and downgrades them to HTTP/1.1 for internal backend servers, the resulting stream contains duplicate Host headers, which leads to parsing inconsistency and potential bypass of security filters.
TL;DR
The 'h2' Python library fails to reject HTTP/2 streams containing multiple 'Host' headers. If an intermediary proxy downgrades these streams to HTTP/1.1, the duplicate headers are forwarded, triggering HTTP Request Smuggling.
Technical Details
- CWE ID: CWE-444
- Attack Vector: Network (AV:N)
- CVSS v3.1 Score: 5.3 (Medium)
- Impact: Low Integrity & Availability (Potential HTTP Request Smuggling)
- Exploit Status: none (Theoretical / No public PoCs available)
- KEV Status: Not Listed
Affected Systems
- Python environments utilizing the h2 (python-hyper) library version <= 4.4.0
- ASGI web servers and Python reverse proxies performing HTTP/2 to HTTP/1.1 translation
-
h2: < 4.4.1 (Fixed in:
4.4.1)
Code Analysis
Commit: 292a408
Fix: Enforce single host header in request validation flow
Mitigation Strategies
- Upgrade the 'h2' library to version 4.4.1 or later immediately.
- Filter out incoming requests at the outer perimeter proxy (e.g., Cloudflare, AWS ALB, NGINX) that contain multiple Host headers before they reach Python-based backend proxies.
- Ensure backend web servers or downstream parsers strictly reject any incoming HTTP/1.1 requests containing duplicate Host headers with a 400 Bad Request error code, adhering to RFC 9112 Section 3.2.
Remediation Steps:
- Run 'pip install --upgrade h2' or update project lockfiles (Poetry, Pipenv) to specify 'h2>=4.4.1'.
- Verify the installed version of 'h2' by executing: python -c "import h2; print(h2.version)"
- Restart ASGI servers and Python-based proxies to load the patched dependency code into memory.
- Audit downstream systems to confirm that they properly reject requests containing duplicate HTTP/1.1 Host headers.
References
- NVD Record for CVE-2026-71554
- GitHub Security Advisory GHSA-6hr6-w5qg-qmwg
- Vulnerability Fix Commit
- Python-Hyper h2 Repository
Read the full report for CVE-2026-71554 on our website for more details including interactive diagrams and full exploit analysis.
Top comments (0)