envoy
v1.40.2Cloud-native high-performance edge/middle/service proxy
- Maintenance
- Active1390 commits in 3 months · bus factor 11
- License
- Apache-2.0Permissive · OSI-approved
- Security
- 30 advisories1 critical, 14 high, 15 medium · Scorecard 8.5/10
- Supported versions
- 4 lines supportednewest 1.40 · oldest 1.37 until Jan 13, 2027 · 8 ended
29.2k stars · 5.7k forks · 1.9k open issues · last release 19 days ago · data checked 2 hours ago
Supported versions
Source: endoflife.date| Line | Latest | Released | Security fixes |
|---|---|---|---|
| 1.40 | 1.40.2 | Oct 13, 2026 | Until Oct 13, 2027 |
| 1.39 | 1.39.6 | Jul 14, 2026 | Until Jul 14, 2027 |
| 1.38 | 1.38.9 | Apr 23, 2026 | Until Apr 23, 2027 |
| 1.37 | 1.37.11 | Jan 13, 2026 | Until Jan 13, 2027 |
| 1.36 | 1.36.13 | Oct 14, 2025 | Ended Oct 14, 2026 |
| 1.35 | 1.35.13 | Jul 23, 2025 | Ended Jul 23, 2026 |
| 1.34 | 1.34.14 | Apr 15, 2025 | Ended Apr 15, 2026 |
| 1.33 | 1.33.14 | Jan 14, 2025 | Ended Jan 14, 2026 |
| 1.32 | 1.32.13 | Oct 15, 2024 | Ended Oct 15, 2025 |
| 1.31 | 1.31.10 | Jul 19, 2024 | Ended Jul 19, 2025 |
| 1.30 | 1.30.11 | Apr 16, 2024 | Ended Apr 16, 2025 |
| 1.29 | 1.29.12 | Jan 16, 2024 | Ended Jan 16, 2025 |
Breaking changes
What to check before upgrading, taken from the notes of the last 30 releases.
- v1.40.0Oct 13, 2026
Breaking changes
- build: Envoy has switched from
WORKSPACEto bzlmod. TheWORKSPACEfile is removed; Envoy, the API and the docs are published as Bazel modules (envoy,envoy_api,envoy-docs). Downstreams must migrate toMODULE.bazeland must add Envoy's custom registry (https://raw.githubusercontent.com/envoyproxy/bazel-registry) alongside the BCR — many of Envoy's dependencies and patched modules are only published there. - build: the hermetic LLVM/Clang toolchain is bumped from 18 to 22.
--config=clangandclang-localare removed — Clang/libc++ is now the default and needs no flag; GCC remains via--config=gcc. The--@envoy//bazel:libc++/libstdc++flags andforce_libcppdefine are gone. Downstreams needing a host LLVM toolchain should followbazel/tests/codeql. - build: the Wasm runtime is now selected with
--@proxy-wasm-cpp-host//bazel:engine=; the old--define wasm=/--define engine=flags fail the build. - tls: AWS-LC is removed as a selectable SSL library (including
--config=aws-lc-fips). ppc64le builds should use--config=openssl. - mcp_router: downstream request headers are no longer forwarded to backends by default — notably
authorization. Use the new per-backendheader_forwarding(forward_all: truerestores the old behavior). - dynamic modules (Rust SDK):
HttpFilterhooks now take&selfrather than&mut self; per-stream mutable state must move behind interior mutability. This closes a use-after-free on synchronous filter-chain teardown.
Deprecations
envoy.extensions.config.validatorsfactories keyed by type URL; dynamic-module log and timing-info callbacks; legacy HTTP filter factory base classes; reverse-tunnelauto_close_connections; Wasm plugin-level capability restriction.
Docker images:
https://hub.docker.com/r/envoyproxy/envoy/tags?page=1&name=v1.40.0
Docs:
https://www.envoyproxy.io/docs/envoy/v1.40.0/
Release notes:
https://www.envoyproxy.io/docs/envoy/v1.40.0/version_history/v1.40/v1.40.0
Full changelog:
https://github.com/envoyproxy/envoy/compare/v1.39.0...v1.40.0
Signed-off-by: Jonh Wendell
Signed-off-by: Ryan Northey
- build: Envoy has switched from
- v1.39.0Jul 14, 2026
Breaking changes
- build: Envoy now uses Bazel 8. Because Envoy still uses WORKSPACE mode,
--enable_workspaceand--noenable_bzlmodare required and have been added to.bazelrc; external-repository runfiles now appear directly under the runfiles root. - build: the Intel DLB connection balancer (
envoy.network.connection_balance.dlb) is disabled for all builds due to a broken source archive. - TLS:
enforce_rsa_key_usageis deprecated and ignored; Envoy now always enforces the certificatekeyUsageextension. - TLS inspector: client TLS versions are validated and must be between TLS 1.0 and TLS 1.3 (revertible via
envoy.reloadable_features.tls_inspector_enforce_client_tls_version). - OpenTelemetry tracing: the tracer now honors Envoy's request-entry sampling decision, including
overall_sampling, even when propagated trace context or the configured sampler requests sampling. This may reduce exported spans.
Security
- HTTP/2 now counts uncompressed cookies toward header-size and header-count limits (CVE-2026-47774), strengthens PRIORITY/WINDOW_UPDATE flood protection, and adds configurable nghttp2 RST_STREAM rate limits.
- HTTP/3 fixes cover QPACK blocked-decoding denial of service (GHSA-p7c7-7c47-pwch) and inconsistent headers-only
content-lengthhandling (CVE-2026-48743). - Security fixes were added for ext_authz (CVE-2026-47205), ext_proc (CVE-2026-47207), gRPC stats (CVE-2026-47204), internal redirects (CVE-2026-47221), and OAuth2 lifecycle handling (CVE-2026-48090).
- OAuth2 adds AES-256-GCM cookie encryption to address CVE-2026-47775. Migration is opt-in: enable
oauth2_use_gcm_encryption, monitoroauth_legacy_cbc_decrypt, then disableoauth2_legacy_cbc_decrypt_compat. - Additional fixes cover DNS query validation (CVE-2026-48497), JSON nesting limits (CVE-2026-48042), PROXY protocol TLV smuggling (CVE-2026-47692), formatter crashes (CVE-2026-47220), TCP StatsD overflow (CVE-2026-48706), TLS SAN NUL handling (CVE-2026-47778), and Zstd decompression memory exhaustion (CVE-2026-48044).
- New upstream RBAC and dynamic-forward-proxy resolved-address filtering provide CIDR-based protection against SSRF after DNS resolution and host selection.
Dynamic modules
- New extension points: access-log/header formatters, downstream and upstream transport sockets, active health checkers, and stats sinks.
- Cluster load balancers can read host stats, read and write dynamic metadata and filter state, and publish main-thread state to worker-local slots.
- Modules can emit metrics from configuration and background contexts; loading and initialization failures now expose server-wide counters tagged by extension instance.
- Added validation-mode detection, network/listener attribute access, batched header and metadata APIs, effective log-level access, and zero-copy borrowed buffers in the Rust SDK.
- Fixed listener HTTP-callout crashes, watermark initialization, streaming-response re-entry, independent decode/encode continuation, CatchUnwind re-entry,
Structconfiguration handling, and HTTP/TCP bridge buffer overflow with more than 64 slices.
MCP (Model Context Protocol) and AI protocols
- Added a Wuffs-backed streaming JSON parser for MCP, A2A, OpenAI, Anthropic, and related protocols, with bounded field capture, incremental parsing, no DOM allocation, and duplicate-key detection.
- MCP filtering now exposes processing status, supports configurable duplicate-key rejection, and improves oversized-body behavior for pass-through and rejection modes.
- MCP router adds elicitation and server-to-client request routing, plus lazy per-backend initialization.
- MCP JSON REST Bridge adds per-route tool configuration and locally generated
tools/listresponses.
- build: Envoy now uses Bazel 8. Because Envoy still uses WORKSPACE mode,
Release history
All releases on GitHubSummary of changes:
- Upstream security fixes:
- eMudhra intermediate CA compromise:
release: updated the distroless docker image base to pick up the patched
ca-certificates package (20250419+deb13u1), so it no longer trusts the roots of the
compromised eMudhra intermediate CAs. The distroless image released in 1.40.1 still
shipped the unpatched bundle.
Docker images:
https://hub.docker.com/r/envoyproxy/envoy/tags?page=1&name=v1.40.2
Docs:
https://www.envoyproxy.io/docs/envoy/v1.40.2/
Release notes:
https://www.envoyproxy.io/docs/envoy/v1.40.2/version_history/v1.40/v1.40.2
Full changelog:
https://github.com/envoyproxy/envoy/compare/v1.40.1...v1.40.2
Signed-off-by: Jonh Wendell
Signed-off-by: Ryan Northey