CVE-2026-47775
Received Received - Intake
Padding Oracle in Envoy OAuth2 Filter

Publication date: 2026-06-26

Last updated on: 2026-06-26

Assigner: GitHub, Inc.

Description
Envoy is an open source edge and service proxy designed for cloud-native applications. Prior to 1.35.11, 1.36.7, 1.37.3, and 1.38.1, the OAuth2 HTTP filter's encrypt()/decrypt() functions use AES-256-CBC without an authentication tag (no HMAC, no AEAD). The /callback endpoint returns HTTP 302 on successful decryption and HTTP 401 on padding failure, creating a padding oracle. An attacker who obtains the encrypted CodeVerifier cookie can recover the plaintext PKCE code_verifier in ~6,200 requests (~100 seconds), then exchange it with a stolen authorization code to obtain the victim's access token. This vulnerability is fixed in 1.35.11, 1.36.7, 1.37.3, and 1.38.1.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-06-26
Last Modified
2026-06-26
Generated
2026-06-26
AI Q&A
2026-06-26
EPSS Evaluated
N/A
NVD
EUVD
Affected Vendors & Products
Showing 4 associated CPEs
Vendor Product Version / Range
envoyproxy envoy to 1.35.11 (exc)
envoyproxy envoy to 1.36.7 (exc)
envoyproxy envoy to 1.37.3 (exc)
envoyproxy envoy to 1.38.1 (exc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-327 The product uses a broken or risky cryptographic algorithm or protocol.
CWE-209 The product generates an error message that includes sensitive information about its environment, users, or associated data.
Attack-Flow Graph
AI Quick Actions
Instant insights powered by AI
Executive Summary

This vulnerability exists in the OAuth2 HTTP filter of Envoy Proxy versions 1.35 to 1.38. It arises because the encrypt() and decrypt() functions use AES-256-CBC encryption without any authentication mechanism such as HMAC or AEAD. The /callback endpoint responds differently depending on whether decryption succeeds or fails (HTTP 302 on success, HTTP 401 on padding failure), which creates a padding oracle.

An attacker who intercepts the encrypted CodeVerifier cookie can exploit this padding oracle by sending about 6,200 crafted requests to decrypt the cookie and recover the plaintext PKCE code_verifier. With this code_verifier and a stolen authorization code, the attacker can obtain the victim's access token.

The vulnerability is fixed in Envoy versions 1.35.11, 1.36.7, 1.37.3, and 1.38.1 by replacing AES-256-CBC with AES-256-GCM (which provides authenticated encryption) and by ensuring uniform error responses to prevent information leakage.

Impact Analysis

This vulnerability can allow an attacker to decrypt sensitive cookies (CodeVerifier) used in OAuth2 authentication flows. By recovering the plaintext PKCE code_verifier and combining it with a stolen authorization code, the attacker can obtain the victim's access token.

With the victim's access token, the attacker can impersonate the victim and gain unauthorized access to protected resources or services, potentially leading to data breaches or unauthorized actions within the affected system.

Detection Guidance

This vulnerability can be detected by monitoring the /callback endpoint of the Envoy OAuth2 HTTP filter for differing HTTP status codes in response to encrypted CodeVerifier cookie requests. Specifically, the endpoint returns HTTP 302 on successful decryption and HTTP 401 on padding failure, which indicates the presence of the padding oracle.

To detect exploitation attempts, you can look for unusual patterns of approximately 6,200 requests targeting the /callback endpoint with varying encrypted cookies.

While no specific commands are provided in the resources, network monitoring tools like tcpdump or Wireshark can be used to capture traffic to the /callback endpoint. Additionally, web server logs can be analyzed for repeated 302 and 401 responses from this endpoint.

Mitigation Strategies

The immediate mitigation step is to upgrade Envoy Proxy to one of the fixed versions: 1.35.11, 1.36.7, 1.37.3, or 1.38.1, where the vulnerability has been addressed.

The fix involves replacing the AES-256-CBC encryption with AES-256-GCM, which provides authenticated encryption, and ensuring that the /callback endpoint returns uniform error responses to prevent information leakage.

Until the upgrade can be applied, monitor and restrict access to the /callback endpoint to reduce the risk of exploitation.

Chat Assistant
Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-47775. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70
EPSS Chart