CVE-2026-84380

HTTPX2: Conflicting Content-Length and Transfer-Encoding headers can be auto-generated

Published Sep 2, 2026 CVSS 3.1 · 5.6 Medium EPSS < 1% KEV · Not listed
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.

Remediation

No solution or workaround provided in the CVE record

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-pf96-p4fj-6566 HTTPX2: Conflicting Content-Length and Transfer-Encoding headers can be auto-generated
History
Type Values Removed Values Added
First Time appeared Pydantic
Pydantic httpx2
Vendors & Products Pydantic
Pydantic httpx2
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
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.
Title HTTPX2: Conflicting Content-Length and Transfer-Encoding headers can be auto-generated
Weaknesses CWE-444
References
Metrics cvssV3_1

{'score': 5.6, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Sep 2, 2026, 6:07 PM
Reserved
Sep 1, 2026, 4:27 PM
Status
Awaiting Analysis
Published
Sep 2, 2026, 6:21 PM
Modified
Sep 9, 2026, 9:05 PM
Severity
Moderate
Public date
Sep 2, 2026, 5:58 PM