GitHub Advisoryadvisory · Go

GHSA-ghc4-35x6-crw5 Envoy has RBAC Header Validation Bypass via Multi-Value Header Concatenation

HIGH Published 2026-03-10 Modified 2026-04-13 Official page ↗
Aliases
CVE-2026-26308
Ecosystem
Go
Packages
github.com/envoyproxy/envoy
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:L/A:N
Weaknesses
CWE-20, CWE-863
Reviewed
2026-03-10

Affected packages

• Go github.com/envoyproxy/envoy: >= 1.37.0, < 1.37.1 → fixed in 1.37.1 • Go github.com/envoyproxy/envoy: >= 1.36.0, < 1.36.5 → fixed in 1.36.5 • Go github.com/envoyproxy/envoy: >= 1.35.0, < 1.35.9 → fixed in 1.35.9 • Go github.com/envoyproxy/envoy: < 1.34.13 → fixed in 1.34.13

Description

1. Summary The Envoy RBAC (Role-Based Access Control) filter contains a logic vulnerability in how it validates HTTP headers when multiple values are present for the same header name. Instead of validating each header value individually, Envoy concatenates all values into a single comma-separated string. This behavior allows attackers to bypass RBAC policies—specifically "Deny" rules—by sending duplicate headers, effectively obscuring the malicious value from exact-match mechanisms. 2. Attack Scenario Consider an environment where an administrator wants to block external access to internal resources using a specific header flag. Configuration The Envoy proxy is configured with a Deny rule to reject requests containing the header `internal: true`. • Rule Type: Exact Match • Target: `internal` header must not equal `true`. The Bypass Logic 1. Standard Request (Blocked): • Input: `internal: true` • Envoy Processing: Sees string `"true"`. • Result: Match found. Request Denied. 2. Exploit Request (Bypassed): • Input: ```http internal: true internal: true ``` • Envoy Processing: Concatenates values into `"true,true"`. • Matcher Evaluation: Does `"true,true"` equal `"true"`? No. • Result: The Deny rule fails to trigger. Request Allowed. 3. Implications • RBAC Bypass: Remote attackers can bypass configured access controls. • Unauthorized Access: Sensitive internal resources or administrative endpoints protected by header-based Deny rules become accessible. • Risk: High, particularly for deployments relying on "Exact Match" strategies for security blocking. 4. Reproduction Steps To verify this vulnerability: 1. Deploy Envoy: Configure an instance with an RBAC Deny rule that performs an exact match on a specific header (e.g., `internal: true`). 2. Baseline Test: Send a request containing the header `internal: true`. • *Observation:* Envoy blocks this request (HTTP 403). 3. Exploit Test: Send a second request containing the same header twice: ```http GET /restricted-resource HTTP/1.1 Host: example.com internal: true internal: true ``` • *Observation:* Envoy allows the request, granting access to the resource. 6. Recommendations Fix Header Validation Logic: Modify the RBAC filter to validate each header value instance individually. Avoid relying on the concatenated string output of `getAllOfHeaderAsString()` for security-critical matching unless the matcher is explicitly designed to parse comma-separated lists. Examine the DENY role to use a Regex style fix. Credit:** Dor Konis

Related

Alias · CVE (1)

  • CVE-2026-26308 Envoy is a high-performance edge/middle/service proxy. vulnerability

Weakness · CWE (2)

  • CWE-20 Improper Input Validation weakness
  • CWE-863 Incorrect Authorization weakness

References