CVE-2026-47221 Overview
CVE-2026-47221 is a null pointer dereference vulnerability [CWE-476] in the Envoy proxy router filter. The flaw affects Envoy versions from 1.18.0 up to 1.35.13, 1.36.9, 1.37.5, and 1.38.3. The router filter mishandles HTTP 303 (See Other) internal redirects when processing body-less non-GET/HEAD requests. An unauthenticated remote attacker can trigger a segmentation fault that crashes the entire Envoy process, terminating all active connections.
Critical Impact
Remote unauthenticated attackers can crash Envoy proxy instances, causing complete denial of service across all traffic routed through the affected proxy.
Affected Products
- Envoy Proxy versions 1.18.0 through 1.35.12
- Envoy Proxy versions 1.36.0 through 1.36.8
- Envoy Proxy versions 1.37.0 through 1.37.4 and 1.38.0 through 1.38.2
Discovery Timeline
- 2026-06-26 - CVE-2026-47221 published to NVD
- 2026-06-27 - Last updated in NVD database
Technical Details for CVE-2026-47221
Vulnerability Analysis
Envoy is an open source edge and service proxy designed for cloud-native applications. The vulnerability resides in the router filter's internal redirect handling logic. When Envoy processes an HTTP 303 (See Other) response as an internal redirect, the redirect handler attempts to drain a request body buffer. For body-less non-GET/HEAD requests, that buffer is never allocated, and the drain operation dereferences a null pointer. The result is a segmentation fault that terminates the Envoy process and all active connections it manages.
Exploitation requires a specific configuration: a route with internal_redirect_policy that includes 303 in redirect_response_codes, plus an upstream service that returns an HTTP 303 response. When both conditions are met, an attacker only needs to send a body-less POST, PUT, DELETE, or PATCH request to trigger the crash.
Root Cause
The root cause is missing null-check validation in the router filter code path that handles internal redirects. The code assumes a request body buffer exists whenever a body-less method like POST or PUT is used. When no request body is present, the buffer pointer is null, and the subsequent drain call dereferences it.
Attack Vector
The attack vector is network-based and requires no authentication or user interaction. An attacker sends a body-less POST, PUT, DELETE, or PATCH request to a vulnerable route. The upstream then returns HTTP 303, which triggers the internal redirect logic and crashes the Envoy worker process. Because Envoy commonly serves as a shared ingress or service mesh sidecar, a single crash can disrupt every service and connection routed through the affected instance.
No verified public proof-of-concept code is available. See the Envoy GitHub Security Advisory GHSA-rcff-gw58-pjpr for authoritative technical details.
Detection Methods for CVE-2026-47221
Indicators of Compromise
- Unexpected Envoy process termination with signal SIGSEGV (segmentation fault) recorded in system or container logs.
- Sudden connection drops across all downstream clients coinciding with an upstream returning HTTP 303 responses.
- Repeated Envoy worker restarts correlated with body-less POST, PUT, DELETE, or PATCH requests to routes using internal_redirect_policy.
Detection Strategies
- Inventory Envoy deployments and confirm versions against the fixed releases 1.35.13, 1.36.9, 1.37.5, and 1.38.3.
- Audit route configurations for any internal_redirect_policy that includes 303 in redirect_response_codes.
- Correlate proxy crash events with HTTP request logs to identify body-less non-GET/HEAD requests preceding the crash.
Monitoring Recommendations
- Monitor Envoy process uptime, restart counts, and crash dump generation through container orchestrator metrics.
- Alert on spikes in upstream HTTP 303 responses combined with client-side connection resets.
- Ingest Envoy access logs and system logs into a centralized SIEM or data lake to correlate crash patterns across the fleet.
How to Mitigate CVE-2026-47221
Immediate Actions Required
- Upgrade Envoy to 1.35.13, 1.36.9, 1.37.5, or 1.38.3 or later depending on your current branch.
- Identify all routes that enable internal redirects and inventory which include 303 in redirect_response_codes.
- Restrict network access to Envoy admin and management interfaces while patching is scheduled.
Patch Information
The vulnerability is fixed in Envoy versions 1.35.13, 1.36.9, 1.37.5, and 1.38.3. Refer to the Envoy GitHub Security Advisory GHSA-rcff-gw58-pjpr for release notes and commit references.
Workarounds
- Remove 303 from the redirect_response_codes list in any internal_redirect_policy configuration until patched.
- Disable internal_redirect_policy entirely on routes where internal redirects are not required.
- Configure upstream services to avoid returning HTTP 303 responses to body-less non-GET/HEAD requests.
# Configuration example: remove 303 from redirect_response_codes
# In your Envoy route configuration YAML:
route:
cluster: upstream_service
internal_redirect_policy:
max_internal_redirects: 3
redirect_response_codes: [301, 302, 307, 308] # 303 removed
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

