v2.0.3
Added 1
- Add two new opt-in ProxyDefaults.spec.config keys for controlling the server response header on API Gateway HTTP listeners: envoy_suppress_envoy_headers and envoy_server_header_name
Fixed 4
- Stop logging the raw ACL token in debug-level content-type logs
- Fixed a regression that caused an HTTP API gateway to reject its configuration with an inconsistent protocols error when a backend service's service-router composed a route to a destination in a different service, namespace, or partition
- Fix WAN flood-join to ignore non-alive destination members (leaving/left/failed), allowing rejoined servers to heal back to alive in WAN membership
- Addition of XFCC headers to gRPC request similar to HTTP request for connect-proxy inbound listener
Security 11
- Update brace-expansion to address DoS via unbounded intermediate arrays
- Update fast-uri to address Host Confusion via backslash authority introducer
- Update golang.org/x/text to v0.39.0 to address GO-2026-5970
- Update google.golang.org/grpc to v1.82.1 to address GHSA-hrxh-6v49-42gf
- Update socket.io-parser to address Zero-attachment Memory Exhaustion
- Upgrade to use Go 1.26.5 to resolve vulnerabilities GO-2026-4970 (os) and GO-2026-5856 (crypto/tls)
- Fixed a denial-of-service vulnerability where GET /v1/agent/connect/ca/roots and POST /v1/agent/connect/authorize used the agent-side cache unconditionally even when http_config { use_cache = false } was configured
- Fixed a nil-pointer dereference panic in ShadowServiceRouterConfigEntry.CheckEnt when a service-router config entry contained a route with a nil Destination
- Fixed a security bypass where a user-supplied public listener with an HTTP Connection Manager filter would skip Consul's inbound request-normalization defaults, allowing attackers to bypass L7 intention deny rules using percent-encoded path equivalents
- Fixed an unauthenticated denial-of-service vulnerability where PUT /v1/agent/check/update/:id, PUT /v1/agent/check/register, PUT /v1/agent/service/register, and POST /v1/agent/connect/authorize decoded unbounded JSON request bodies before resolving the caller's ACL token, now capped at 512 KiB
- Fixed an unauthenticated denial-of-service vulnerability where the external gRPC and gRPC-TLS listeners accepted an unlimited number of TCP connections per source IP, now controlled by limits.grpc_max_conns_per_client configuration option (default 100)
2.0.3 (August 7, 2026)
SECURITY:
- Update
brace-expansionto address GHSA-rgw5-rvv9-x895 (DoS via unbounded intermediate arrays). [GH-23786] - Update
fast-urito address GHSA-7p8r-x3mc-p8w7 (Host Confusion via backslash authority introducer). [GH-23786] - Update
golang.org/x/textto v0.39.0 to address GO-2026-5970. [GH-23761] - Update
google.golang.org/grpcto v1.82.1 to address GHSA-hrxh-6v49-42gf. [GH-23761] - Update
socket.io-parserto address CVE-2026-69185 (Zero-attachment Memory Exhaustion). [GH-23786] - Upgrade to use Go
1.26.5. This resolves vulnerabilities GO-2026-4970 (os). GO-2026-5856 (crypto/tls). [GH-23761] - agent: Fixed a denial-of-service vulnerability where
GET /v1/agent/connect/ca/rootsandPOST /v1/agent/connect/authorizeused the agent-side cache unconditionally, even whenhttp_config { use_cache = false }was configured by the operator. A remote caller could bypass this setting and grow the agent cache without bound by varying the request ACL token. Both endpoints now skip the cache and issue a direct RPC whenuse_cacheis disabled. (SECVULN-50292, SECVULN-50293) [GH-23797] - agent: Fixed a nil-pointer dereference panic in
ShadowServiceRouterConfigEntry.CheckEntwhen a service-router config entry contained a route with a nilDestination. A crafted snapshot restore or replication message containing such an entry could crash the FSM decode path. The nil guard now treats a missing destination as non-enterprise data and continues decoding safely. (SECVULN-50291) [GH-23797] - agent: Fixed a security bypass where a user-supplied public listener
(
envoy_public_listener_json) with an HTTP Connection Manager filter would skip Consul's inbound request-normalization defaults. An attacker could exploit the un-normalized path to bypass L7 intentiondenyrules using percent-encoded path equivalents. Consul now injects path normalization (enabled by default, unless the mesh config optionInsecureDisablePathNormalizationis set) on every HCM filter chain in user-provided public listeners before L7 intention enforcement is applied. (SECVULN-50295) [GH-23797] - agent: Fixed an unauthenticated denial-of-service vulnerability where
PUT /v1/agent/check/update/:id,PUT /v1/agent/check/register,PUT /v1/agent/service/register, andPOST /v1/agent/connect/authorizedecoded unbounded JSON request bodies before resolving the caller's ACL token. An unauthenticated caller could retain multiple large JSON decoder buffers concurrently inside the Consul process before each request was rejected with HTTP 403, causing attacker-controlled heap growth. All four endpoints now cap the request body at 512 KiB before any decoding occurs, returning HTTP 413 for oversized bodies. This limit applies to chunked transfer encoding as well as declaredContent-Length. (SECVULN-50418) [GH-23796] - agent: Fixed an unauthenticated denial-of-service vulnerability where the external gRPC
and gRPC-TLS listeners accepted an unlimited number of TCP connections per source IP
before any request processing, ACL check, or rate limiting could occur. A remote attacker
could exhaust agent file descriptors, goroutines, and memory by opening many connections
and withholding the gRPC or TLS handshake. A new per-client-IP connection limiter is now
applied before the gRPC server observes the connection, controlled by the new
limits.grpc_max_conns_per_clientconfiguration option (default 100). The gRPC handshake timeout has also been reduced from the library default of 120 seconds to 20 seconds. (SECVULN-50294) [GH-23797]
IMPROVEMENTS:
- ui: migrate yadda/Gherkin acceptance tests to native QUnit (harness, intentions/create, components, settings) [GH-23741]
- xds: Add two new opt-in
ProxyDefaults.spec.configkeys for controlling theserverresponse header on API Gateway HTTP listeners:envoy_suppress_envoy_headers(removes the header entirely) andenvoy_server_header_name(renames it to a custom value). If both are set, suppress takes precedence. [GH-13027]
BUG FIXES:
- agent: Stop logging the raw ACL token in debug-level content-type logs. [GH-23731]
- api-gateway: Fixed a regression that caused an HTTP API gateway to reject its configuration with an "inconsistent protocols" error (resulting in intermittent 503s) when a backend service's
service-routercomposed a route to a destination in a different service, namespace, or partition during discovery-chain synthesis. [GH-23793] - serf: Fix WAN flood-join to ignore non-alive destination members (leaving/left/failed), allowing rejoined servers to heal back to alive in WAN membership. [GH-23709]
- xds: Addition of XFCC headers to GPRC request similar to HTTP request for connect-proxy inbound listener [GH-23744]