Bug 2527704 (CVE-2026-84381)

Summary: CVE-2026-84381 httpx2: httpcore2: HTTPX2: WebSocket traffic sent in plaintext via SOCKS5 proxy due to TLS failure
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security <prodsec-ir-bot>
Status: NEW --- QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: unspecifiedCC: anpicker, dfreiber, drow, ebourniv, gbenhaim, hasun, jburrell, jfula, jowilson, jwong, kaycoth, mhayden, niyer, nyancey, omaciel, ometelka, ptisnovs, rjohnson, sbunciak, sdoran, syedriko, twaugh, vkumar, xdharmai
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in httpcore2, a component used by HTTPX2. When a remote origin uses WebSocket Secure (wss) through a SOCKS5 proxy, httpcore2 fails to initiate Transport Layer Security (TLS) encryption because its upgrade condition only recognizes HTTPS. This vulnerability allows an attacker controlling or observing the proxy path to intercept and read sensitive WebSocket traffic, including authentication details and data frames, as it is transmitted in plaintext. The attacker could also modify the traffic or impersonate the WebSocket server, leading to information disclosure and potential compromise of communication integrity.
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:

Description OSIDB Bzimport 2026-09-02 18:35:30 UTC
HTTPX2 is a next generation HTTP client for Python. Prior to 2.10.0, httpcore2 fails to start TLS in src/httpcore2/httpcore2/_sync/socks_proxy.py and src/httpcore2/httpcore2/_async/socks_proxy.py when the remote origin uses wss through a SOCKS5 proxy because the TLS upgrade condition only recognizes https. HTTPX2 exposes the flaw through Client.websocket() and AsyncClient.websocket() from 2.6.0 through 2.9.1, so the opening handshake, query parameters, Authorization headers, cookies, and subsequent frames can cross the proxy path in plaintext without certificate verification. An attacker controlling or observing that path can read or modify traffic and impersonate the WebSocket server. This issue is fixed in httpcore2 2.10.0 and HTTPX2 2.10.0.