ZeroHour

CVE-2026-53714

Unauthenticated xDS API in Envoy Gateway Leaks TLS Private Keys and Routing Config

CVSS 3.1
7.4 high
EPSS
Published
()
Modified
AI analysis

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.

Affected
envoyproxy Envoy Gatewayprior to 1.7.4
envoyproxy Envoy Gateway1.8.0 (1.8.x prior to 1.8.1)
Estimated exposure
No basis for an estimate.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

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 news

No ingested article mentions this CVE yet.