/

CVE-2026-73552

Severity:

HIGH RISK

(7.5)

Input Validation (CWE-20) in Envoy HTTP RBAC Matching

CVE-2026-73552

Analyzed

Vulnerability type

Category:

Improper Input Validation

CWE:

CWE-20

Impact:

Authorization Bypass

Severity:

HIGH RISK

(7.5)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Envoy HTTP RBAC may incorrectly evaluate certain RFC-valid opaque header values when a negative safe_regex policy is combined with byte-oriented route matching. A downstream client able to send crafted header bytes could cause a request intended to be denied to reach a protected route, resulting in an authorization policy bypass.

Affected context

The issue occurs in Envoy HTTP RBAC configurations that use negative safe_regex matching for header-based authorization decisions alongside route matchers that inspect header bytes differently. It is most relevant when downstream clients can supply opaque header values containing a prohibited marker and an unrelated obs-text octet. Plain positive ALLOW regexes generally fail closed, and exact, prefix, suffix, and contains matchers are not known to exhibit the same subject-domain mismatch.

Exploit preconditions

  • Attack surface: Envoy HTTP request handling and header-based RBAC evaluation
  • Required access: Ability to send requests through an Envoy listener and control relevant header values
  • Trigger point: Evaluation of a negative safe_regex RBAC condition followed by byte-oriented route matching
  • Why exploitation is possible: RE2 evaluates the header subject using UTF-8 semantics, while another matcher may inspect the same opaque bytes directly, allowing inconsistent policy outcomes

Why this happens

The underlying defect is inconsistent handling of the input domain across security-relevant matchers. RFC-valid opaque header bytes are accepted, but RE2's UTF-8 subject semantics can cause a negative regular-expression check to return an ordinary no-match when the subject is not valid UTF-8. A byte-oriented route matcher can still detect the prohibited marker, creating a discrepancy between authorization evaluation and routing. This maps to CWE-20: Improper Input Validation, because the input's byte and encoding properties are not normalized or validated consistently before policy decisions are made.

Potential impact

  • A request may bypass a negative RBAC rule
  • Protected routes may become reachable by unauthorized clients
  • Access to sensitive application operations or data could occur
  • Authorization behavior may differ across equivalent header representations

General mitigation guidance

Mitigation generally focuses on making authorization matchers operate over a consistent, explicitly defined input domain.

Common defensive patterns include:

  • Normalize or reject header values that do not conform to the encoding assumptions of the policy engine
  • Prefer fail-closed authorization rules and avoid relying solely on negative regular-expression conditions
  • Use matcher types whose byte and text semantics are well understood and consistent
  • Keep route authorization decisions independent from ambiguous downstream header interpretation where possible
  • Apply least-privilege RBAC policies and minimize the routes exposed to untrusted clients
  • Test policy behavior with opaque, non-ASCII, malformed, and boundary-case header values

How teams detect issues like this

Detection can combine configuration review, targeted testing, and runtime monitoring:

  • Flag negative safe_regex RBAC rules applied to attacker-controlled headers
  • Review configurations for combinations of regex-based authorization and byte-oriented route matching
  • Test equivalent header values across ASCII, obs-text, invalid UTF-8, and marker-containing cases
  • Use policy checks to require explicit input normalization or rejection before authorization
  • Monitor for denied-policy anomalies, unexpected route access, and divergent authorization outcomes
  • Automated configuration and code review tools can help identify risky matcher combinations and missing fail-closed behavior

Sources

SourceLink
github.comgithub.com/envoyproxy/envoy/commit/5650cb9770d4420ec2bcbed8b90be06f564ecc07
github.comgithub.com/envoyproxy/envoy/commit/7d1dee5dda66434d84437cc5c85153aa03955e26
github.comgithub.com/envoyproxy/envoy/commit/c2b9a19dc081f03be6a9b4ca932673e5e7a33d18
github.comgithub.com/envoyproxy/envoy/commit/f3726765f3a12ddc76dcb52c0b79bec3d95ced1c
github.comgithub.com/envoyproxy/envoy/releases/tag/v1.36.10
github.comgithub.com/envoyproxy/envoy/releases/tag/v1.37.6
github.comgithub.com/envoyproxy/envoy/releases/tag/v1.38.4
github.comgithub.com/envoyproxy/envoy/releases/tag/v1.39.1
github.comgithub.com/envoyproxy/envoy/security/advisories/GHSA-23xh-2qxr-3xv8

Frequently asked

questions

Yes, when Envoy is exposed to a client that can send the relevant header values and the deployment uses the affected combination of negative regex authorization and byte-oriented route matching.

Not necessarily. The key prerequisite is the ability to submit requests through the affected Envoy listener; whether authentication is required depends on the surrounding deployment.

Ensure authorization policies use a consistent input representation, reject or normalize unsupported header bytes, and favor fail-closed rules that do not depend on ambiguous negative regex behavior.

Treat encoding and byte-domain assumptions as part of security policy design, test unusual header values, review matcher combinations, and enforce least-privilege route authorization.

Find out what's already
exploitable in your codebase.