Envoy
v1.40.0Networking & MessagingA major release with breaking build and default changes, security fixes, and expanded protocol, extension, authentication, and observability support. The affected areas include builds using removed options, deployments relying on changed defaults, and configurations that use the listed protocol and security components.
Action needed (4)
securityThe 1.39.x security fixes
The release carries forward the 1.39.x security fixes for URL normalization of path parameters (CVE-2026-73511, CVE-2026-73551), HTTP/2 trailers without
END_STREAMand dropped-Hostaccounting (CVE-2026-73513, CVE-2026-73550), HTTP/3 UAF (CVE-2026-73512), ext_authz pathless-request crashes and UAF (CVE-2026-73547, CVE-2026-50572), generic-upgrade body pipelining (CVE-2026-73548), safe_regex Latin1 mode (CVE-2026-73552), RBACignore_path_parameters(CVE-2026-73553), admin stat-name sanitization (CVE-2026-73546), and oauth2/api_key_auth CONNECT crashes (GHSA-8vc2-jrm4-835w, GHSA-47vj-9r25-wv5j).breakingThe
Clang/libc++build defaultClang/libc++is now the default and no flag is required to select it.breakingThe container-aware CPU detection default
Container-aware CPU detectionis enabled by default.breakingThe
QUERYContent-TyperequirementQUERYrequests withoutContent-Typeare rejected on all protocols.
Check if affected (8)
securityPath-traversal protection in the
JSON/REST bridgeApplies if you run the
JSON/REST bridge.The
JSON/REST bridgenow prevents path traversal via template variables.breakingThe
--config=clangandclang-localflags, removedApplies if you use
--config=clangorclang-local.--config=clangandclang-localare removed.breakingThe C++ library selection options, removed
Applies if you use
--@envoy//bazel:libc++,libstdc++, orforce_libcpp.The
--@envoy//bazel:libc++,libstdc++, andforce_libcppoptions are removed.breakingThe Wasm runtime engine selection flag
Applies if you use
--define wasm=or--define engine=.The Wasm runtime is selected with
--@proxy-wasm-cpp-host//bazel:engine=<engine>. The older--define wasm=and--define engine=flags now fail the build.breakingThe
AWS-LCSSL library selectionApplicability is not stated in the release notes.
AWS-LCis removed as a selectable SSL library, including--config=aws-lc-fips. ppc64le builds should use--config=openssl.breakingThe
mcp_routerdownstream header-forwarding defaultApplies if you run
mcp_router.Downstream request headers are no longer forwarded to backends by default in
mcp_router.breakingThe default ECDH curves and
X25519MLKEM768Applies if you do not configure
envoy..reloadable_features. pqc_default_ecdh_curves X25519MLKEM768is added to the default ECDH curves whenenvoy.is not configured.reloadable_features. pqc_default_ecdh_curves breakingThe
WORKSPACEtoMODULE.build configurationbazel Applies if you configure
WORKSPACE.The
WORKSPACEfile is removed. Envoy, its API, and its documentation are published as Bazel modules.
All 29 other recorded changesadditions 16 · fixes 8 · constraints 2 · value changes 2 · defaults 1
additions (16)
- QUIC listeners gain client-certificate (mTLS) support, upstream QUIC gains client certificates, and P-384/P-521 ECDSA curves are supported.
- new
route_specifiersextension point post-processes (refines, drops, or synthesizes) the matched route - new
per_worker_subsetpolicy - new
load_aware_localitypolicy - gains response-side LLM token-usage extraction for OpenAI, Anthropic and Gemini dialects (SSE and JSON), published as typed dynamic metadata (
envoy.), plus request-info, schema-validation and transcoding sub-filters and body re-serialization.data. ai. v3. TokenUsage - MCP filter: per-route config, protocol-version enforcement, required client capabilities, new method groups, no-op mode and early termination when routable.
- New extension points: cluster specifier, route specifier, header formatter, early header mutation, TLS handshaker, transport-socket relay, config validator, and downstream STARTTLS.
- Typed metadata get/set, runtime getters, tracing spans across hooks, stream timing, upstream attempt/peer-address accessors, and Go SDK stats/log-level getters.
- TLS: per-certificate TLS params, multiple upstream certificates with a certificate selector, SPIFFE upstream SAN validation, SDS file polling, and upstream session cache scoped by SNI.
- OAuth2 gains assertion audience/key-id and TLS client auth for the credential injector; JWT auth gains claim paths and a JWT-claim rate-limit descriptor; GCP auth gains scopes, audiences and IAM access tokens; ext_authz gains shadow mode on the network filter and route-cache-clearing headers.
- Access logs: downstream handshake time points and connection RTT, listener name and route-resolution-time formatters, CEL-expression formatter config, and nanosecond histogram units.
- OpenTelemetry: resource detectors, custom exporters, instrumentation scope, and typed custom tags; ext_authz and ext_proc emit client spans.
- Stats: per-cluster/listener stats matchers, explicit tags
- Redis proxy: RESP3 protocol support,
CLUSTER SHARDS - Reverse tunnels: JWT handshake auth, maintain interval, fail-closed identifier validation
- Watchdog backtrace action, UDP health checker, multi-health-checker, TCP proxy load-shed points, and a body-size-limit HTTP filter.
fixes (8)
- This closes a use-after-free on synchronous filter-chain teardown.
- Broad hardening: a large batch of lifetime/view fixes across HTTP, network, listener and cluster-LB filter state
- a fix for Prometheus native-histogram bucket indices being off by one.
- several use-after-free fixes.
- a batch of handshake lifecycle fixes.
- Fixed a family of races where route-level configuration (AWS signing, composite, filter chain, local ratelimit, dynamic modules, SDS secrets) could be destroyed on a worker thread after an RDS update.
- which also fixes inbound-only drain for the Mongo/Redis/Thrift/generic proxies
- connectionless listeners no longer go dark during drain
constraints (2)
- Dynamic-module clusters can now delegate host selection to Envoy's built-in LBs (
ROUND_ROBIN,LEAST_REQUEST,RANDOM,RING_HASH,MAGLEV). - HTTP/1 now accepts the RFC 10008
QUERYmethod
value changes (2)
- the hermetic LLVM/Clang toolchain is bumped from 18 to 22
- HTTP/3 and QUIC are now stable
defaults (1)
- coalesced LB rebuilds on EDS batch updates are now on by default
A weekly email arrives when a release needs action. Like the security patches and breaking changes in this release.