cve · · Envoy · Medium · cvss 6.3

CVE-2026-6994: Envoy Query Parameter Injection via header_mutation

Envoy's header_mutation filter inserts header values into query strings without URL encoding, enabling arbitrary query-parameter injection — auth bypass, SQLi/XSS on upstream services. Affects v1.33.0+.

Summary

The header_mutation filter’s query_parameter_mutations feature inserts values from formatters (e.g. %REQ(header)%) into query strings without URL encoding. The encoding helper (PercentEncoding::urlEncode()) exists in the codebase, but this code path doesn’t call it.

Example

An attacker sets a header containing URL metacharacters:

X-Inject: alice&admin=true&sql=1'OR'1'='1

Envoy copies the header value verbatim into the upstream request’s query string:

/api?user=alice&admin=true&sql=1'OR'1'='1

Root cause

params.add() at header_mutation.cc:22 and toString() at utility.cc:1156 output raw values. Other Envoy filters (OAuth2, gRPC transcoder) correctly use urlEncode() for the same operation — this filter just didn’t.

Impact

Discovery

Code review of Envoy’s header_mutation filter and query_parameter_mutations path. Confirmed end-to-end against a running Envoy instance.

Status

Fixed in PR #43502. CVE assigned.


← all research