Medium severity · published Sep 2, 2026
CVE-2026-84380
HTTPX2: Conflicting Content-Length and Transfer-Encoding headers can be auto-generated
5.6
CVSS
0.2%
EPSS
No
On KEV
Description
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.
CVSS vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L
Attack vector
Network
Complexity
High
Privileges
None
User interaction
None
Confidentiality
Low
Integrity
Low
Availability
Low
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)0.2% · higher than 13% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
HT
httpx2 · pydantic
< 2.11.0 · source: vendor
Affected product
HT
httpx2
pydantic
More from httpx2
8.1
CVE-2026-84381
HTTPX2: Secure WebSocket traffic sent without TLS through SOCKS proxies
7.5
CVE-2026-84382
HTTPX2: Streaming response decompression does not bound peak memory (decompression amplification)
5.9
CVE-2026-84378
HTTPX2: Quadratic SSE line buffering can cause CPU denial of service
5.3
CVE-2026-84379
HTTPX2: Multipart part header injection via unvalidated file Content-Type and custom headers