Envoy Gateway CVE-2026-53715
MEDIUMSeverity by source
AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
Network reader on :18002, race condition raises AC:H, tenant RBAC for EnvoyExtensionPolicy sets PR:L, DoS-only impact with no confidentiality or integrity consequence.
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
2DescriptionGitHub Advisory
Vulnerability report without repro case. Repro case may be added later after harness is complete.
Preconditions (4):
- Pod-network reachability to :18002 (no auth)
- Tenant can create EnvoyExtensionPolicy (baseline)
- Attacker pod floods GET while churning EnvoyExtensionPolicy with distinct Wasm URLs
- Read at :153 must overlap a write at :201/:209 (probabilistic, attacker controls both rates)
Description:
httpserver.go:153 reads s.mappingPath2Cache with no lock while httpserver.go:201/209 write it under s.Lock(); the struct uses a plain map. Writer is tenant-reachable via EnvoyExtensionPolicy translation, reader is pod-network-reachable on :18002 with per-request goroutines. Go's concurrent map read+write detection calls runtime.throw, which net/http's per-conn recover cannot catch, so the controller process exits - cross-tenant control-plane DoS. Capped at MEDIUM: DoS-only, k8s restarts pod, timing-dependent trigger.
AnalysisAI
Envoy Gateway's Wasm extension cache HTTP server (port 18002) can be crashed by a tenant-level attacker, causing a cross-tenant control-plane denial of service. The race condition in httpserver.go causes Go's runtime to call runtime.throw upon detecting an unsynchronized concurrent map access - a fatal signal that net/http's per-connection recover cannot intercept - terminating the entire controller process. While Kubernetes restarts the pod, all tenants sharing the controller lose control-plane availability during the restart window. No public exploit has been identified at time of analysis, but the four-condition precondition set is largely within baseline tenant capabilities.
Technical ContextAI
Envoy Gateway (pkg:go/github.com/envoyproxy/gateway) is a Kubernetes-native implementation of the Gateway API, using Envoy Proxy as the data plane. The affected component is an internal HTTP server on port 18002 that serves cached Wasm extension binaries. The cache is stored in s.mappingPath2Cache, a plain Go map - not a sync.Map or equivalent concurrency-safe structure (CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization). The read path at httpserver.go:153 is invoked per incoming HTTP request goroutine without holding the struct mutex, while the write path at httpserver.go:201 and :209 does acquire s.Lock() during EnvoyExtensionPolicy translation. Go's runtime map implementation detects concurrent read/write races and invokes runtime.throw, a non-recoverable fatal function that bypasses the recover() mechanism used by net/http's per-connection panic handler, causing an immediate process exit. The writer path is reachable by tenants authorized to create EnvoyExtensionPolicy resources, and the reader path is exposed over pod-network without authentication.
RemediationAI
Upgrade to Envoy Gateway 1.7.4 (for 1.7.x deployments) or 1.8.1 (for 1.8.x deployments), as confirmed by the vendor advisory GHSA-8fv2-88gg-hm7q at https://github.com/envoyproxy/gateway/security/advisories/GHSA-8fv2-88gg-hm7q. The fix must add locking around the read at httpserver.go:153 to match the existing lock protection on writes at :201/:209, or replace the plain map with a sync.Map. If immediate upgrade is not possible, restrict pod-network access to port 18002 via Kubernetes NetworkPolicy to limit the read-side attack surface - note this may break Wasm extension serving for legitimate consumers. Additionally, tighten RBAC to limit which service accounts and tenants can create or modify EnvoyExtensionPolicy resources, reducing the set of principals who can trigger the write path; this trade-off removes extension management capability from restricted tenants. Neither workaround eliminates the race; only the patch resolves the root cause.
More in Kubernetes
View allA critical vulnerability in Kubernetes ingress-nginx controller allows unauthenticated attackers with pod network access
Credential-harvesting malware compromised 84 versions of 42 TanStack npm packages on 2026-05-11 via chained GitHub Actio
Kubernetes ingress-nginx contains a configuration injection vulnerability via the mirror-target and mirror-host Ingress
A security issue was discovered in ingress-nginx https://github.com/kubernetes/ingress-nginx where the `auth-url` Ingres
A security issue was discovered in ingress-nginx https://github.com/kubernetes/ingress-nginx where the `auth-tls-match-c
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.exter
A security issue was discovered in Kubernetes where a user that can create pods on Windows nodes may be able to escalate
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated critical severity (CVSS 9.9), this vulne
Unauthenticated remote attackers can trigger complete database overwrites, server-side file reads, and SSRF attacks agai
The Kubernetes integration in GitLab Enterprise Edition 11.x before 11.2.8, 11.3.x before 11.3.9, and 11.4.x before 11.4
Fluentd configuration injection in the kube-logging Logging operator before 6.6.0 allows a namespace-scoped user who can
Kyverno Kubernetes policy engine prior to 1.x has a privilege escalation vulnerability (CVSS 9.9) allowing policy bypass
Same weakness CWE-362 – Race Condition
View allSame technique Information Disclosure
View allVendor StatusVendor
SUSE
Severity: Moderate| Product | Status |
|---|---|
| SUSE Linux Enterprise Server 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP5 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP6 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Affected |
Share
External POC / Exploit Code
Leaving vuln.today
GHSA-8fv2-88gg-hm7q