Skip to main content

Envoy Gateway CVE-2026-53716

| EUVDEUVD-2026-78079 MEDIUM
Memory Allocation with Excessive Size Value (CWE-789)
2026-07-16 https://github.com/envoyproxy/gateway GHSA-cxpq-8v7q-cg56
6.5
CVSS 3.1 · Vendor: https://github.com/envoyproxy/gateway
Share

Severity by source

Vendor (https://github.com/envoyproxy/gateway) PRIMARY
6.5 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
vuln.today AI
7.7 HIGH

S:C corrects the provided vector's S:U because the shared controller crash disrupts all co-tenants; PR:L reflects RBAC-gated EnvoyExtensionPolicy creation access.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H
SUSE
MEDIUM
qualitative

Primary rating from Vendor (https://github.com/envoyproxy/gateway).

CVSS VectorVendor: https://github.com/envoyproxy/gateway

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Source Code Evidence Fetched
Jul 16, 2026 - 19:51 vuln.today
Analysis Generated
Jul 16, 2026 - 19:51 vuln.today

DescriptionCVE.org

Vulnerability report without repro case. Repro case may be added later after harness is complete.

Preconditions (4):

  • Tenant can create EnvoyExtensionPolicy (baseline)
  • Attacker hosts a gzip-bomb at a reachable URL
  • sha256 unset (optional field; check is post-decompression anyway)
  • No operator Wasm-URL allowlist (none exists in code)

Description

getFileFromGZ calls io.ReadAll on a raw gzip.Reader (httpfetcher.go:216) with no output bound, while the compressed input is capped at 256 MiB (httpfetcher.go:139). The bytes originate from a tenant-controlled EnvoyExtensionPolicy.spec.wasm[].code.http.url (envoyextensionpolicy.go:1077 → cache.go:248 → httpfetcher.go:147 → :233), so an untrusted tenant can point at a ~10 MiB gzip-of-zeros and force ~10 GiB allocation in the shared controller process. All candidate guards execute either before the body is buffered or after decompression. OOM-kills, restarts, re-reconciles same CR, crash-loops - persistent cross-tenant control-plane outage with PR:L/AC:L and scope change → HIGH despite availability-only.

AnalysisAI

Unbounded gzip decompression in Envoy Gateway's Wasm HTTP fetch path allows a low-privileged tenant to exhaust memory in the shared controller process via a crafted gzip-bomb URL, causing persistent cross-tenant control-plane outages. Any tenant with RBAC permission to create EnvoyExtensionPolicy resources can trigger approximately 10 GiB of heap allocation from a 10 MiB compressed payload, OOM-killing the controller; because the controller restarts and immediately re-reconciles the malicious custom resource, the crash-loop is self-sustaining and affects all co-tenants until the offending policy is deleted or the controller is patched. No public exploit code has been identified at time of analysis; vendor-released patches are available in versions 1.7.4 and 1.8.1.

Technical ContextAI

Envoy Gateway is a CNCF-backed Kubernetes API gateway controller written in Go (pkg:go/github.com/envoyproxy/gateway). The vulnerability resides in the Wasm extension fetch subsystem: when an EnvoyExtensionPolicy resource specifies a Wasm module via HTTP URL (spec.wasm[].code.http.url), the controller's httpfetcher.go fetches and decompresses the content. The specific flaw is in the getFileFromGZ function (httpfetcher.go:216), which constructs a gzip.Reader from the HTTP response body and then calls io.ReadAll with no output-size limit. While the compressed input stream is bounded at 256 MiB (httpfetcher.go:139), gzip-of-zeros payloads routinely achieve decompression ratios exceeding 1000:1, meaning a 10 MiB compressed file can expand to approximately 10 GiB in memory. The data flow is envoyextensionpolicy.go:1077 → cache.go:248 → httpfetcher.go:147 → httpfetcher.go:233 → httpfetcher.go:216. CWE-789 (Uncontrolled Memory Allocation) precisely describes the root cause: no io.LimitReader or equivalent bound wraps the decompressor output. The optional sha256 integrity field provides no protection because it is checked after decompression completes - meaning the allocation damage occurs before any validation gate fires.

RemediationAI

Upgrade Envoy Gateway to version 1.7.4 (for 1.7.x deployments) or 1.8.1 (for 1.8.x deployments), as confirmed by the GitHub Security Advisory GHSA-cxpq-8v7q-cg56 at https://github.com/envoyproxy/gateway/security/advisories/GHSA-cxpq-8v7q-cg56. If immediate patching is not feasible, the most effective compensating control is to revoke or restrict RBAC permissions for creating and modifying EnvoyExtensionPolicy resources from untrusted tenants; this eliminates the attack surface entirely but also disables HTTP-based Wasm extension management for those tenants. A secondary control is to implement Kubernetes NetworkPolicy or egress firewall rules on the gateway-controller pod to prevent it from reaching arbitrary external HTTP servers, limiting Wasm URL fetches to an operator-approved set of hosts; this constrains the gzip-bomb delivery mechanism but requires careful allowlist curation to avoid breaking legitimate Wasm workflows. Note that no native Wasm-URL allowlist feature exists in the current codebase, so URL-based filtering must be enforced externally.

Vendor 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

Share

CVE-2026-53716 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy