Envoy Gateway: OCI layer extraction allocates make([]byte, h.Size) from untrusted tar header
Moderate severity
GitHub Reviewed
Published
Jun 5, 2026
in
envoyproxy/gateway
•
Updated Jul 16, 2026
Package
Affected versions
>= 1.8.0-rc.0, < 1.8.1
< 1.7.4
Patched versions
1.8.1
1.7.4
Description
Published to the GitHub Advisory Database
Jul 16, 2026
Reviewed
Jul 16, 2026
Last updated
Jul 16, 2026
Vulnerability report without repro case. Repro case may be added later after harness is complete.
Preconditions (4):
Description
At imagefetcher.go:287, make([]byte, h.Size) uses the attacker-controlled tar-header size; the LimitReader at :278 bounds bytes read from the stream but not the header-declared size returned by tr.Next() (a 512-byte header can claim a multi-TB entry via PAX/GNU encoding). Reached from untrusted tenant input via EnvoyExtensionPolicy spec.wasm[].code.image.url (envoyextensionpolicy.go:1157 → cache.go:262/299 → imagefetcher.go:218 → :287), and the allocation happens for every tar entry regardless of filename. The resulting Go runtime OOM throw is unrecoverable and, because the CRD persists, crash-loops the shared controller — single-request, non-volumetric, cluster-wide DoS.
References