CVE-2026-48090: Envoy OAuth2 Filter Use-After-Free DoS Vulnerability
Envoy, a widely-deployed service proxy for containerized environments, contains a memory-safety bug in its OAuth2 filter that can crash worker processes when handling concurrent token exchanges. The vulnerability occurs when an asynchronous token-verification operation completes after the downstream connection it serves has already closed, causing the filter code to access memory that is no longer valid. An attacker can trigger this condition remotely without authentication, leading to denial of service. The issue does not enable code execution but degrades service availability.
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-07-08
NVD description (verbatim)
Envoy is an open source edge and service proxy designed for cloud-native applications. From 1.37.0 until 1.37.5 and 1.38.3, the HTTP OAuth2 filter (envoy.filters.http.oauth2) can leave an in-flight async token exchange attached to a downstream stream that has already been torn down. A late AsyncClient completion can still invoke OAuth2Filter methods that use StreamDecoderFilterCallbacks after that object’s lifetime has ended, causing undefined behavior, worker crashes (availability loss), and use-after-free / invalid-vptr failures under AddressSanitizer. This is a memory-safety / lifetime issue in the data plane, not a trivial config bug. Remote code execution is not claimed here; the primary demonstrated impact is DoS via crash and UB; any further impact would be deployment- and allocator-dependent. This vulnerability is fixed in 1.37.5 and 1.38.3.
2 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The HTTP OAuth2 filter in Envoy versions 1.37.0 through 1.37.4 and 1.38.0 through 1.38.2 has a use-after-free vulnerability (CWE-416) rooted in asynchronous callback lifetime mismanagement. When an AsyncClient-driven token exchange request is in flight and the associated downstream stream is destroyed (e.g., due to client disconnect or request timeout), a subsequent AsyncClient completion event can invoke StreamDecoderFilterCallbacks methods on a dangling pointer. This violates the object lifetime contract and triggers undefined behavior including worker crashes, invalid vtable lookups (detected by AddressSanitizer), and potential memory corruption. The flaw is in the data plane, not the control plane or configuration layer.
Business impact
Service availability is at direct risk in production Envoy deployments that rely on the OAuth2 filter for authentication. A remote attacker can induce worker process crashes by initiating OAuth2 authentication flows and abruptly terminating connections, forcing a restart of Envoy pods or instances. In large deployments with automated restarts, this may cause cascading session losses, degraded throughput, or temporary service unavailability depending on retry policies and traffic patterns. The vulnerability does not compromise confidentiality or integrity of data in transit; the impact is primarily operational disruption.
Affected systems
Envoy versions 1.37.0 through 1.37.4 and 1.38.0 through 1.38.2 are affected. Deployments are at risk only if the OAuth2 HTTP filter is explicitly enabled in the proxy configuration. Envoy used purely as a reverse proxy, load balancer, or ingress controller without OAuth2 authentication is not exposed. The vulnerability does not affect the Envoy control plane (xDS) or other filters.
Exploitability
The vulnerability is remotely exploitable without authentication or special privileges. An attacker needs only network access to the Envoy listener and the ability to initiate and quickly terminate HTTP requests during active OAuth2 token exchange. The attack does not require specific Envoy configuration details or knowledge of internal state; it exploits a fundamental lifetime mismatch in asynchronous callback handling. However, the condition is not trivial to trigger consistently—timing must align such that AsyncClient completion occurs after stream teardown, which may require multiple attempts or sustained request patterns. This explains the CVSS score of 5.9 (Medium severity) despite the remote, unauthenticated vector.
Remediation
Upgrade to Envoy version 1.37.5 or later (for the 1.37 branch) or 1.38.3 or later (for the 1.38 branch). These patches correct the asynchronous callback lifecycle management in the OAuth2 filter, ensuring that in-flight token exchanges are properly cancelled or awaited before downstream stream destruction is finalized. No workaround is available; patching is the only remediation. Organizations must verify that their Envoy build includes the fix and validate the upgrade in a staging environment before production rollout.
Patch guidance
Verify your installed Envoy version using `envoy --version`. If you are on 1.37.x, upgrade to 1.37.5 or later. If you are on 1.38.x, upgrade to 1.38.3 or later. Newer major versions (1.39+) are also unaffected. Test the upgrade in a canary or staging cluster first, paying attention to OAuth2 filter behavior under load and during client disconnection scenarios. Monitor worker process restarts and memory sanitizer logs post-upgrade to confirm the fix. If you maintain a custom Envoy build, apply the memory-safety patches from the upstream repository to your branch and rebuild.
Detection guidance
Monitor Envoy worker process exit codes and crash logs for segmentation faults, invalid memory access patterns, or AddressSanitizer reports mentioning the OAuth2 filter or StreamDecoderFilterCallbacks. Kubernetes environments should track pod restart counts for Envoy deployments using the OAuth2 filter. A sudden increase in restarts correlating with authentication traffic may indicate exploitation. Enable ASAN or Valgrind in staging environments to catch the use-after-free before it manifests as a hard crash. Query metrics for token exchange latency spikes or timeout errors that might precede crashes.
Why prioritize this
Although the CVSS score is Medium, this vulnerability warrants prompt patching in any deployment relying on Envoy for OAuth2-protected services. The remote, unauthenticated exploitability and direct impact on service availability—coupled with the ease of triggering across multiple requests—make it a meaningful operational risk. Prioritize patching for customer-facing or mission-critical Envoy instances. If OAuth2 is not in use, the risk is negligible, and patching can be scheduled within normal update cycles.
Risk score, explained
CVSS 5.9 (Medium) reflects the network-accessible, unauthenticated attack vector (AV:N, PR:N) balanced against the high complexity of consistent triggering (AC:H) and the availability-only impact (A:H, C:N, I:N). The score does not account for scope or exploitability in live attack campaigns; it is a standardized baseline. Real-world risk depends on whether OAuth2 is deployed, traffic patterns, and the criticality of the Envoy service.
Frequently asked questions
Do I need to patch if I don't use the OAuth2 filter?
No. This vulnerability is specific to the OAuth2 HTTP filter. If your Envoy configuration does not include `envoy.filters.http.oauth2`, you are not affected and can defer patching. Verify your configuration files and any dynamically loaded filter definitions.
Can this vulnerability be exploited to read or modify traffic?
No. The vulnerability is a memory-safety crash, not an information disclosure or authorization bypass. It does not enable an attacker to bypass authentication, decrypt traffic, or forge tokens. The impact is denial of service only.
What happens if I upgrade Envoy but don't restart the workers?
Envoy typically requires a full process restart or graceful drain to load new code. In many Kubernetes deployments, upgrading the image or manifest will trigger rolling pod restarts automatically. Verify that your deployment mechanism ensures workers are restarted with the new binary; simply updating the image without pod recreation will not apply the patch.
Are there any known public exploits for CVE-2026-48090?
This vulnerability is not on the CISA KEV list and has not been observed in active exploitation campaigns as of the publication date. However, given its simplicity and remote nature, it is prudent to patch promptly rather than wait for public proof-of-concept code to emerge.
This analysis is provided for informational purposes and represents our understanding of the vulnerability based on available vendor advisory data and CVE records. Readers should verify all patch versions and affected software versions against authoritative vendor sources before making deployment decisions. The absence of public exploit code or KEV listing does not imply the vulnerability is not exploitable; organizations should patch according to their risk tolerance and operational schedule. Specific impact and remediation steps may vary by deployment architecture, Envoy configuration, and downstream system behavior. Source: NVD (public-domain), retrieved 2026-08-05. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-47205MEDIUMEnvoy ext_authz Use-After-Free Denial of Service
- CVE-2026-47207MEDIUMEnvoy Proxy Crash via Malformed ext_proc Response (Use-After-Free)
- 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