Description
Envoy is an open source edge and service proxy designed for cloud-native applications. Prior to 1.35.11, 1.36.7, 1.37.3, and 1.38.1, Envoy can translate a downstream HTTP/3 request that is complete at the transport layer (HEADERS with FIN / headers-only close) but still carries a nonzero Content-Length into a complete upstream HTTP/1 request with unresolved body debt. In an HTTP/1 upstream deployment where the origin replies before reading the declared body and keeps the connection reusable, the beginning of the next Envoy-generated upstream request can be consumed as the first request's body. The remaining bytes are then parsed by the origin as a new HTTP/1 request. This was reproduced as a route-bypass/desync: direct /pwn was denied by Envoy, but the second downstream H3 stream received the response for backend-parsed GET /pwn HTTP/1.1. This vulnerability is fixed in 1.35.11, 1.36.7, 1.37.3, and 1.38.1.
CVSS breakdown
Affected products
- envoyproxy / envoy>= 1.38.0, < 1.38.1 – >= 1.38.0, < 1.38.1
- envoyproxy / envoy>= 1.37.0, < 1.37.3 – >= 1.37.0, < 1.37.3
- envoyproxy / envoy>= 1.36.0, < 1.36.7 – >= 1.36.0, < 1.36.7
- envoyproxy / envoy>= 1.35.0, < 1.35.11 – >= 1.35.0, < 1.35.11