Bug 2527695 (CVE-2026-84380)

Summary: CVE-2026-84380 httpx2: HTTPX2: Request Smuggling and Connection Desynchronization via Conflicting HTTP Headers
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security DevOps Team <prodsec-dev>
Status: NEW --- QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: ebourniv, gbenhaim, hasun, kaycoth, mhayden, niyer, nyancey, ptisnovs, rjohnson, sbunciak, sdoran, twaugh
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in HTTPX2, a Python HTTP client. The `Request._prepare()` function can incorrectly add a `Content-Length` header to a request that already includes a `Transfer-Encoding` header. This conflict in HTTP framing headers can lead to request smuggling or connection desynchronization. This could allow an attacker to bypass security controls or interfere with network traffic.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 2537696    
Bug Blocks:    

Description OSIDB Bzimport 2026-09-02 18:10:58 UTC
HTTPX2 is a next generation HTTP client for Python. Prior to 2.11.0, Request._prepare() in src/httpx2/httpx2/_models.py can add a body-derived Content-Length header to a request that already contains a caller-supplied Transfer-Encoding header because its setdefault() processing checks each default header independently rather than treating the two framing headers as mutually exclusive. Fixed-size byte, JSON, form, and known-length multipart bodies can therefore be serialized over HTTP/1.1 with both headers, allowing request smuggling or connection desynchronization when downstream intermediaries disagree about which framing header takes precedence. This issue is fixed in version 2.11.0.