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, internal/wasm/imagefetcher.go follows tenant-controlled EnvoyExtensionPolicy spec.wasm[].code.image.url values to Docker or OCI Wasm layers, and extractWasmPluginBinary uses the untrusted tar-header h.Size value to allocate memory before validating the entry name or declared size. A small PAX or GNU tar header can therefore claim a multi-terabyte entry even though the surrounding LimitReader restricts only the bytes read from the stream, and no registry allowlist prevents a permitted tenant from selecting an attacker-controlled registry that the controller can reach. The allocation is attempted for every tar entry and can cause an unrecoverable Go runtime out-of-memory failure; because the custom resource persists, reconciliation repeatedly crash-loops the shared controller and causes a single-request, non-volumetric, cluster-wide control-plane denial of service. This issue is fixed in versions 1.7.4 and 1.8.1.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
envoyproxy gateway
< 1.7.4affected>= 1.8.0-rc.0, < 1.8.1affected
References
- https://github.com/envoyproxy/gateway/security/advisories/GHSA-h7pq-86h8-rp5x ↗
- https://github.com/envoyproxy/gateway/pull/9171 ↗
- https://github.com/envoyproxy/gateway/pull/9172 ↗
- https://github.com/envoyproxy/gateway/pull/9173 ↗
- https://github.com/envoyproxy/gateway/commit/5a78db82b7cf4fc5bebbeda2c50952892038a464 ↗
- https://github.com/envoyproxy/gateway/commit/96e2b750868a459ace4b8b68e6a6e4fb0152b9b7 ↗
- https://github.com/envoyproxy/gateway/commit/b4737180c7e597490c6363075c565fa8cf24eead ↗
- https://github.com/envoyproxy/gateway/releases/tag/v1.7.4 ↗
- https://github.com/envoyproxy/gateway/releases/tag/v1.8.1 ↗