High · published September 22, 2026
Envoy is an open source edge and service proxy designed for cloud-native applications. Prior to 1.36.10, 1.37.6, 1.38.4, and 1.39.1, Envoy forwards data for a configured non-WebSocket HTTP upgrade before the upstream accepts the upgrade. An unauthenticated HTTP/2 client can place a complete HTTP/1.1 request in extended CONNECT data; Envoy downgrades the request, writes the data unframed to a keep-alive HTTP/1.1 upstream, and returns the socket to the shared pool while the smuggled response remains queued. A different downstream client can then receive the attacker's response. The relevant scope boundary is that webSocket upgrades, plain CONNECT, disabled backend keep-alive, per-downstream pools, and max_requests_per_connection set to 1 are not affected by the demonstrated path. This issue is fixed in versions 1.36.10, 1.37.6, 1.38.4, and 1.39.1.
| Product | Versions | Fixed in |
|---|---|---|
| envoyproxy/envoy | < 1.36.10 | 1.36.10 |
| envoyproxy/envoy | ≥ 1.37.0, < 1.37.6 | 1.37.6 |
| envoyproxy/envoy | ≥ 1.38.0, < 1.38.4 | 1.38.4 |
| envoyproxy/envoy | ≥ 1.39.0, < 1.39.1 | 1.39.1 |