CVE-2026-53714
—Unauthenticated xDS API in Envoy Gateway Leaks TLS Private Keys and Routing Config
Envoy Gateway versions prior to 1.7.4 and 1.8.1 expose the xDS gRPC server without authentication when deployed in GatewayNamespaceMode (provider.kubernetes.deploy.type=GatewayNamespace): a JWT StreamInterceptor authenticates only discoveryv3.DeltaDiscoveryRequest messages, no UnaryInterceptor is installed at all, and discoveryv3.DiscoveryRequest messages used by the State-of-the-World protocol fail a type assertion and are accepted without JWT validation. As a result, any pod that can reach the gateway's port 18000 can invoke unauthenticated unary Fetch RPCs or the State-of-the-World streaming path. This allows an attacker to retrieve TLS private keys via StreamSecrets, all xDS resources via StreamAggregatedResources, backend endpoints via StreamClusters or StreamEndpoints, and routing configuration via StreamRoutes or StreamListeners. Organizations running affected releases in GatewayNamespaceMode where port 18000 is reachable from other pods in the cluster are impacted. No public proof of concept is known and the issue is not in the CISA KEV catalog.
What to do: Upgrade Envoy Gateway to 1.7.4 or 1.8.1 (or later) as soon as possible. If you run GatewayNamespaceMode, apply Kubernetes NetworkPolicies that restrict access to port 18000 on the gateway pods so only the intended agent/proxy pods can connect. Because StreamSecrets exposes TLS private keys, rotate any certificates served by an affected gateway and audit logs for unexpected unauthenticated Fetch, StreamSecrets, or State-of-the-World DiscoveryRequest calls.
| envoyproxy Envoy Gateway | prior to 1.7.4 |
| envoyproxy Envoy Gateway | 1.8.0 (1.8.x prior to 1.8.1) |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Envoy Gateway is an open source project for managing Envoy Proxy as a standalone or Kubernetes-based application gateway. Prior to 1.7.4 and 1.8.1, the xDS gRPC server in GatewayNamespaceMode, configured through provider.kubernetes.deploy.type=GatewayNamespace, installs a JWT StreamInterceptor but no UnaryInterceptor, leaving every unary Fetch RPC unauthenticated. The streaming interceptor also authenticates only discoveryv3.DeltaDiscoveryRequest messages; a discoveryv3.DiscoveryRequest used by the State-of-the-World protocol fails the type assertion and returns success without JWT validation. Any pod that can reach port 18000 can use the unauthenticated unary or State-of-the-World paths to retrieve TLS private keys through StreamSecrets, all xDS resources through StreamAggregatedResources, backend endpoints through StreamClusters or StreamEndpoints, and routing configuration through StreamRoutes or StreamListeners. This issue is fixed in versions 1.7.4 and 1.8.1.
- Weakness
- CWE-306
- Vector
- CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
In the news0 stories
No ingested article mentions this CVE yet.