CVE-2026-47205: Envoy ext_authz Use-After-Free Denial of Service
Envoy, a widely-deployed open source proxy for cloud-native infrastructure, contains a use-after-free defect in its authorization filter that can cause the proxy to crash. The vulnerability occurs when a request uses dynamic per-route authorization settings and the client connection closes very quickly—such as when a user rapidly refreshes a WebSocket connection to a protected endpoint. Under these conditions, Envoy's internal authorization tracking becomes corrupted, leading to a segmentation fault that terminates the affected proxy instance. This flaw affects Envoy versions 1.36.0 through 1.36.8, 1.37.0 through 1.37.4, and 1.38.0 through 1.38.2.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 5.9 MEDIUM · CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
- Weaknesses (CWE)
- CWE-416
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-06-26 / 2026-06-29
NVD description (verbatim)
Envoy is an open source edge and service proxy designed for cloud-native applications. From 1.36.0 until 1.36.9, 1.37.5, and 1.38.3, a Use-After-Free (UAF) vulnerability leading to a sudden segmentation fault exists in Envoy's ext_authz HTTP filter when processing per-route authorization overrides concurrently with rapid downstream client disconnects. During standard request lifecycles, Envoy instantiates the ext_authz filter with a foundational authorization client object (client_). If a matched route dictates a dynamic per-route HTTP or gRPC authorization service override, the filter generates a localized client. In the vulnerable implementation, this transient client aggressively overwrote the default client_ unique pointer by executing client_ = std::move(per_route_client). When a client rapidly establishes and subsequently tears down a stream (such as rapidly refreshing a protected WebSocket endpoint), the downstream triggers the ConnectionManagerImpl::doDeferredStreamDestroy() -> ActiveStream::onResetStream() lifecycle. Envoy immediately sequences Filter::onDestroy() in an attempt to securely abort dispatched asynchronous authorization check transactions via client_->cancel(). By destructing the default client abruptly during initiateCall, a memory lifecycle misalignment occurs within the async client manager. The stream teardown fails to reliably track and cancel the dynamically bound asynchronous authorization tasks, orchestrating a sequence where a late asynchronous callback from the network evaluates against a heavily destroyed ActiveStream validation span, generating a UAF process crash. This vulnerability is fixed in 1.36.9, 1.37.5, and 1.38.3.
2 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability stems from memory lifecycle misalignment in the ext_authz HTTP filter's handling of per-route authorization client overrides. When a route configuration specifies a dynamic authorization service (HTTP or gRPC), the filter creates a temporary per-route client object and moves it into the default client_ unique pointer using std::move(per_route_client). If a downstream client disconnects rapidly during an active authorization check, Envoy's stream teardown path calls Filter::onDestroy(), which attempts to cancel outstanding async authorization tasks via client_->cancel(). However, the async client manager fails to properly track and clean up the dynamically-bound authorization callbacks. This creates a window where a late asynchronous callback fires against an already-destructed ActiveStream validation context, triggering a use-after-free condition and immediate process crash via segmentation fault. The root cause is the absence of reliable lifetime synchronization between the per-route client override and the asynchronous callback completion path.
Business impact
A deployed Envoy proxy with this vulnerability becomes susceptible to denial-of-service attacks triggered by rapid client disconnections on routes that use per-route authorization overrides. An attacker could exploit this by scripting repeated connection attempts to protected endpoints, causing the proxy to crash repeatedly and disrupting service availability. Each crash requires manual intervention to restart the proxy, and in highly concurrent environments, exploitation could be trivial. Organizations relying on Envoy for API gateway, ingress control, or service mesh data-plane functions would experience intermittent or sustained outages, directly impacting end-user access to protected services. The impact is amplified in containerized or Kubernetes deployments where auto-restart mitigates uptime but operational noise and resource churn increase.
Affected systems
Envoy versions 1.36.0 through 1.36.8, 1.37.0 through 1.37.4, and 1.38.0 through 1.38.2 are vulnerable. The defect requires three specific conditions: (1) the proxy must be running an affected version, (2) routes must be configured with per-route authorization service overrides (ext_authz HTTP or gRPC), and (3) clients must disconnect rapidly while authorization checks are in flight. Organizations using Envoy as an API gateway, Istio data plane, or cloud ingress controller should assess whether their route configurations leverage per-route authorization logic; if so, upgrade immediately.
Exploitability
Exploitation requires moderate attacker sophistication but minimal privilege. An unauthenticated attacker can trigger the crash by crafting rapid HTTP requests with immediate disconnections to any route protected by per-route authorization overrides. Tools like curl with short timeouts or custom client code can reliably reproduce the condition. No authentication, special network positioning, or privileged access is needed. The CVSS score of 5.9 reflects high availability impact (denial of service) tempered by the requirement to match specific route configurations and timing windows (AC:H). In real-world settings, the practical exploitability is high if per-route authorization is in use, as the attack is straightforward to automate and difficult to rate-limit without service disruption.
Remediation
Upgrade affected Envoy instances to patched versions immediately: 1.36.9 or later, 1.37.5 or later, or 1.38.3 or later. Organizations should verify their current Envoy version against the vendor's release notes to confirm the fix is included. For deployments where immediate patching is not feasible, disable per-route authorization service overrides and consolidate to cluster-level authorization configurations as a temporary mitigation, though this may require route reconfiguration and is not a long-term substitute for patching. In Kubernetes environments using Istio, patch the data plane proxies and restart affected pods; control-plane upgrades alone do not address the vulnerability in already-running proxies.
Patch guidance
Verify your Envoy deployment version via envoy --version. Cross-reference against the affected ranges: 1.36.0–1.36.8, 1.37.0–1.37.4, 1.38.0–1.38.2. If vulnerable, consult the official Envoy release notes to identify the patched version for your release branch (1.36.9+, 1.37.5+, or 1.38.3+). For containerized deployments, rebuild or re-pull container images with the patched Envoy binary. In Kubernetes, update the Istio sidecar proxy image tag or Envoy image in your Deployment manifests, then trigger a rolling restart of affected pods. For binary installations, download the patched release from the official Envoy repository and restart the proxy process. Test the upgrade in a staging environment first, particularly if your route configurations use per-route authorization, to ensure no behavioral regressions.
Detection guidance
Monitor Envoy logs for segmentation fault (SIGSEGV) crashes or abort signals correlating with rapid client disconnects to protected endpoints. Check Envoy's metrics endpoints for sudden spikes in proxy restarts or crashes. In Kubernetes, watch for pod CrashLoopBackOff or high restart counts on Envoy sidecar proxies. Use strace or debuggers to capture core dumps if feasible; the crash stack trace should reference ext_authz filter code and async callback destruction paths. Correlate crashes with traffic patterns showing rapid connect-disconnect cycles to routes using per-route authorization service configurations. Deploy WAF or rate-limiting rules to throttle rapid connection attempts to protected endpoints as a detective measure, though this does not prevent the underlying flaw.
Why prioritize this
Although the CVSS score is moderate (5.9), this vulnerability warrants high priority for organizations using per-route authorization in Envoy because: (1) exploitability is straightforward and does not require authentication, (2) the impact is complete availability loss of affected proxy instances, (3) the vulnerability is triggered by normal-looking traffic patterns (rapid client disconnects) that are difficult to distinguish from legitimate behavior, and (4) affected versions are widely deployed in production cloud and Kubernetes environments. The presence of a public vulnerability identifier combined with clear exploitation patterns means malicious actors can rapidly weaponize this. Patching should be treated as urgent for any environment where Envoy is critical to service availability.
Risk score, explained
The CVSS 3.1 score of 5.9 (MEDIUM) reflects: AV:N (network-accessible), AC:H (high attack complexity due to timing constraints), PR:N (no privilege required), UI:N (no user interaction), S:U (unchanged scope), C:N (no confidentiality impact), I:N (no integrity impact), and A:H (high availability impact via denial of service). The AC:H rating acknowledges that reliable exploitation requires precise timing of client disconnects during active authorization checks. However, in real-world deployments using per-route authorization, this timing condition is easily met through automated attack scripts, making the practical risk materially higher than the score suggests. Organizations should treat this as a high-priority patch candidate despite the moderate numerical score.
Frequently asked questions
Do we need to patch if we don't use per-route authorization overrides?
No. The vulnerability is only triggered if your Envoy route configurations explicitly override the authorization service on a per-route basis. If all routes use the default cluster-level authorization client, the vulnerable code path is not exercised. However, audit your route configs to confirm this before deciding to defer patching.
Can we work around this without patching?
Temporarily, yes. Disable per-route authorization overrides and consolidate to cluster-level authorization settings. This eliminates the vulnerable code path but requires route reconfiguration and is not a permanent fix. Upgrade to patched versions as soon as operationally feasible.
How do we know if we're being exploited?
Monitor for sudden Envoy crashes or restarts correlated with traffic spikes to protected endpoints. Kubernetes pod restart counts and CrashLoopBackOff states are red flags. Enable core dump collection if possible to confirm the crash is in the ext_authz filter's async callback code.
Does this affect Envoy in sidecar (service mesh) vs. gateway (ingress) deployments differently?
The vulnerability affects both equally. Sidecar proxies and dedicated gateways using per-route authorization are equally susceptible. In mesh deployments, patching the proxy image and restarting pods is necessary; control-plane version does not directly address the vulnerability.
This analysis is based on the official CVE record and vendor advisory as of the publication date. Organizations should verify patch version numbers and compatibility with their specific Envoy deployment against the official Envoy release notes before applying updates. This content is for informational purposes and does not constitute security advice or a guarantee of vulnerability status. Always test patches in non-production environments first. SEC.co assumes no liability for implementation decisions or outcomes resulting from this information. Source: NVD (public-domain), retrieved 2026-08-05. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-47207MEDIUMEnvoy Proxy Crash via Malformed ext_proc Response (Use-After-Free)
- CVE-2026-48090MEDIUMEnvoy OAuth2 Filter Use-After-Free DoS Vulnerability
- CVE-2025-55644MEDIUMHeap Use-After-Free in GPAC MP4Box v2.4 DoS Vulnerability
- CVE-2025-55650MEDIUMHeap Use-After-Free in GPAC MP4Box v2.4 DoS Vulnerability
- CVE-2025-59615MEDIUMQualcomm Memory Corruption in Persistent Memory Buffer Operations
- CVE-2025-59616MEDIUMQualcomm Use-After-Free Vulnerability in Multiple Platforms—CVSS 6.6
- CVE-2025-59617MEDIUMQualcomm Firmware Memory Corruption via IOCTL Buffer Reuse
- CVE-2025-60465MEDIUMGPAC MP4Box Use-After-Free Denial of Service Vulnerability