Description
When http.Transport sends an HTTP/1 CONNECT request with a non-empty Request.Body, it writes the body directly to the connection without framing after the request headers. If the server rejects the CONNECT request with a non-2xx keep-alive response, Transport returns the connection to the idle pool. Because CONNECT requests do not have a request body, the server may interpret the trailing body bytes as a subsequent pipelined HTTP/1.1 request on the connection, leaving the pooled connection desynchronized and causing the next caller that reuses it to read the response to the injected request. In reverse proxies (including httputil.ReverseProxy) that forward CONNECT requests through a shared Transport, this can lead to cross-user response poisoning.
Published: 2026-10-08
Score: n/a
EPSS: n/a
KEV: No
Impact: Unauthorized response poisoning across users via HTTP CONNECT desynchronization
Action: Update Library
AI Analysis

Impact

When a client sends a CONNECT request with a non‑empty body, the Go http.Transport writes the body directly to the connection after the headers. If the server rejects the CONNECT with a non‑2xx keep‑alive response, the transport returns that connection to the idle pool. Because CONNECT requests have no body, the server can interpret the trailing body bytes as a new pipelined HTTP request. The reused connection may then deliver the attacker‑controlled response to another client, resulting in cross‑user response poisoning. This flaw exposes internal application data to unintended parties and can lead to unauthorized disclosure. The weakness involves improper handling of persistent connections and leftover data in the connection stream.

Affected Systems

The vulnerability affects the Go standard library packages net/http and net/http/httputil used in any Go application that employs an http.Transport or ReverseProxy. No specific version range is defined in the advisory, so any use of these packages prior to the fix is potentially susceptible.

Risk and Exploitability

The CVSS score and EPSS are not published, and the issue is not listed in the CISA KEV catalog. The exploitation requires an attacker to control a client that uses a shared Transport to send a CONNECT request with a body to a server that rejects the request. The attacker then injects an HTTP request into the body that the server processes as a new request, leaving the idle connection desynchronised. Depending on the target application and the data exposed by the poisoned response, the impact could range from information disclosure to functional manipulation of downstream requests. In environments where Go applications share Transport instances across users, the risk is amplified, although the lack of publicly available severity metrics suggests a moderate to high potential risk pending further assessment.

Generated by OpenCVE AI on October 9, 2026 at 00:26 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to a patched Go release that addresses GO-2026-6605
  • If an upgrade must be delayed, configure the http.Transport to disable keep‑alive for connections that perform CONNECT requests, e.g., set .DisableKeepAlives=true or use a dedicated transport instance per user
  • Avoid sending a body with CONNECT requests or validate that no body is sent before initiating the request

Generated by OpenCVE AI on October 9, 2026 at 00:26 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 08 Oct 2026 23:00:00 +0000

Type Values Removed Values Added
Description When http.Transport sends an HTTP/1 CONNECT request with a non-empty Request.Body, it writes the body directly to the connection without framing after the request headers. If the server rejects the CONNECT request with a non-2xx keep-alive response, Transport returns the connection to the idle pool. Because CONNECT requests do not have a request body, the server may interpret the trailing body bytes as a subsequent pipelined HTTP/1.1 request on the connection, leaving the pooled connection desynchronized and causing the next caller that reuses it to read the response to the injected request. In reverse proxies (including httputil.ReverseProxy) that forward CONNECT requests through a shared Transport, this can lead to cross-user response poisoning.
Title HTTP/1 client connection desynchronization after CONNECT rejection in net/http
References

Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: Go

Published:

Updated: 2026-10-08T22:53:58.586Z

Reserved: 2026-06-23T15:10:49.354Z

Link: CVE-2026-56866

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-08T23:17:01.620

Modified: 2026-10-08T23:17:01.620

Link: CVE-2026-56866

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-09T00:30:17Z

Weaknesses

No weakness.