Summary
Envoy Gateway: Wasm cache ServeHTTP reads mappingPath2Cache without lock
Advisory details
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.
References
Related vulnerabilities
All Supply chain →- MEDIUMCVE-2026-73557
vLLM: Incomplete CVE-2025-62164 remediation can be bypassed by concurrent prompt parts
- HIGHCVE-2026-55784
free5GC AUSF authentication contexts can be overwritten by concurrent requests for the same SUPI
- MEDIUMGHSA-mc9m-6fm9-pghc#kcl-lib
Zoo Design Studio: Memory-corruption in memory handling of lib-kcl
- MEDIUMGHSA-mc9m-6fm9-pghc#zoo-kcl
Zoo Design Studio: Memory-corruption in memory handling of lib-kcl
- MEDIUMCVE-2026-45404
OpenTelemetry-Go: Unsynchronized baggage map can panic under concurrent access
- MEDIUMCVE-2026-64865
New API: Redis user quota cache overwrite via PUT /api/user/self allows quota bypass