{"id":"CVE-2026-84380","title":"HTTPX2 is a next generation HTTP client for Python","summary":"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 h…","severity":"medium","cvss":5.6,"cvssVector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L","cwe":["CWE-444"],"vendor":"httpx2","product":"httpx2","affected":["httpx2 < 2.11.0"],"patched":["httpx2 2.11.0"],"published":"2026-09-02","updated":"2026-09-09","sourceUpdated":"2026-09-09T21:05:23.237","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-84380","references":[{"url":"https://github.com/pydantic/httpx2/commit/829b93a2393212996f613e635261f777d9ec6eab","label":"security-advisories@github.com"},{"url":"https://github.com/pydantic/httpx2/pull/1137","label":"security-advisories@github.com"},{"url":"https://github.com/pydantic/httpx2/releases/tag/v2.11.0","label":"security-advisories@github.com"},{"url":"https://github.com/pydantic/httpx2/security/advisories/GHSA-pf96-p4fj-6566","label":"security-advisories@github.com"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-84380"},{"url":"https://github.com/pydantic/httpx2"},{"url":"https://github.com/advisories/GHSA-pf96-p4fj-6566"},{"url":"https://pypi.org/project/httpx2"},{"url":"https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-84380.json"},{"url":"https://access.redhat.com/security/cve/CVE-2026-84380"},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2527695"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-84380"}],"tags":["nvd","osv","pip","ghsa","csaf","vex","red-hat"],"epss":0.00221,"epssPercentile":0.129,"aliases":["GHSA-pf96-p4fj-6566","PYSEC-2026-3849"],"ecosystem":"pip","ingestedAt":"2026-09-08T21:11:12.322Z","slug":"CVE-2026-84380","body":"## Overview\n\nHTTPX2 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.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.\n\n## Package advisory (CVE-2026-84380)\n\nAffected packages:\n\n- `httpx2 < 2.11.0`\n\nPatched in:\n\n- `httpx2 2.11.0`\n\nSource: https://osv.dev/vulnerability/GHSA-pf96-p4fj-6566\n\n## Vendor advisories\n\n- **Red Hat VEX** · Moderate · affected: Lightspeed Core, Red Hat OpenShift AI (RHOAI) · no fix planned: Lightspeed Core, Red Hat OpenShift AI (RHOAI) · updated 2026-09-22 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-84380.json)","depth":"sunlit","depthScore":31,"depthScoreParts":{"impact":30.8,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[]}