Istio
1.31.4Networking & MessagingA security-focused maintenance release with fixes across ambient mode, policy enforcement, proxy connection handling, control-plane request parsing, multicluster identity checks, and `ztunnel`. It also includes operational correctness repairs, performance improvements, and support for `AUTO_PASSTHROUGH` listeners on ambient east-west gateways.
Check if affected (7)
securityAmbient-mode
PeerAuthenticationenforcement, GHSA-rr2c-p22p-6r9rApplies if you use ambient mode with a mesh-wide
STRICTpolicy and a workload mode ofPERMISSIVEorDISABLE.Istio 1.31.4 fixes an operator-precedence error that could skip a port-level
STRICTPeerAuthenticationin ambient mode when the workload mode wasPERMISSIVEorDISABLEunder a mesh-wideSTRICTpolicy. This prevented plaintext traffic from reaching a port that required mTLS.securityCase-insensitive
AuthorizationPolicyhost conditions, GHSA-7m6f-j3gp-2r53Applies if you use
AuthorizationPolicyconditions onrequest.orheaders[:authority] request..headers[host] Istio 1.31.4 changes
AuthorizationPolicyconditions onrequest.andheaders[:authority] request.to case-insensitive matching, consistent with host matching. This prevents differently cased host values from bypassing the policy.headers[host] security
sidecar proxyconntrack handling, GHSA-cxwg-46mx-q8hfApplies if a
sidecar proxyreceives a new inbound connection that reuses the 4-tuple of a torn-down connection.Istio 1.31.4 fixes stale conntrack handling that could let a new inbound connection bypass the
sidecar proxywhen it reused the 4-tuple of a torn-down connection.security
istiodxDS resource-name parsing, GHSA-635j-qv98-9275Applies if a workload with a mesh identity sends an
istio.xDS request with a resource name that fails URL parsing.io/debug Istio 1.31.4 prevents
istiodfrom crashing when a workload with a mesh identity sends anistio.xDS request whose resource name fails URL parsing. The fix prevents the resulting control-plane crash loop.io/debug securityAmbient-mode
AuthorizationPolicyvalidation, GHSA-8jw7-82jp-wr2cApplies if you use ambient mode with an
AuthorizationPolicycontaining an emptytoorfromentry.Istio 1.31.4 rejects the empty
toorfromentries that previously could makeistiodcrash in ambient mode when accepted by the validating webhook. This prevents a crash loop that stopped configuration distribution across the mesh.securityMulticluster
CLUSTER_IDvalidation, GHSA-gf6w-6mxv-5fj4Applies if you use multicluster installations.
Istio 1.31.4 fixes cluster identity handling in multicluster installations so a proxy cannot claim another cluster's
CLUSTER_IDand receive that cluster's Kubernetes secrets over SDS.security
ztunneltraceparentparsing, GHSA-77vw-rg85-wx5xApplies if
ztunnelreceives a 55-bytetraceparentheader without four dash-separated fields on an inbound HBONE connection.Istio 1.31.4 fixes a
ztunnelpanic when parsing a 55-bytetraceparentheader without four dash-separated fields. The fix prevents the inbound HBONE connection task from terminating and dropping every multiplexed stream on that connection.
All 17 other recorded changesfixes 16 · additions 1
fixes (16)
- Fixed the JWKS resolver’s periodic background refresh caching a fetched response without validating that it looks like a JWKS.
- Fixed an istiod panic when outlierDetection was applied to a dynamic forward proxy (DFP) wildcard cluster.
- Fixed an issue where the istio-cni Helm chart did not respect the value set for istioOwnedCNIConfigFileName .
- Fixed an issue where updates to the istio-cni config via the Helm chart did not restart istio-cni to pick up the new values.
- Fixed an issue where, when uninstalling the istio-cni Helm chart, the owned istio-cni config was not removed or the primary CNI config did not have the istio-cni plugin removed.
- Fixed an issue where, when enabling the owned istio-cni config, the primary CNI config was not cleaned up.
- Fixed an issue where, when changing the owned istio-cni config filename, the previous filename was not removed.
- Fixed the source_app and destination_app metric labels to use the app pod label when a pod also has app.kubernetes.io/name . Since 1.29.1 they had used app.kubernetes.io/name , which is a regression from the intended behavior.
- Fixed a situation where fetching the JWKS could block xDS generation.
- Fixed AuthorizationPolicy ipBlocks and notIpBlocks matching on waypoint and sidecar HBONE internal listeners to use the downstream client’s direct remote IP address instead of the internal Envoy address.
- Fixed an issue where istio-cni skipped cleanup for an ambient pod deleted together with its namespace, leaving its ztunnel proxy and host probe ipset entry behind.
- Fixed an issue introduced in Istio 1.31 where a change to a ConfigMap containing CA certificates, such as the kube-root-ca.crt ConfigMap that Kubernetes creates in every namespace, triggered CDS, LDS, RDS, and NDS pushes to every proxy.
- Fixed an issue where a metadata-only update to an EndpointSlice , such as a GitOps tool writing an annotation, triggered an EDS push, and for headless Services with non-HTTP ports a push to every proxy, even though the endpoints were unchanged.
- Fixed istiod only tolerating the default cni.istio.io/not-ready taint. When taint.name is set to a custom taint, the istiod deployment now tolerates that taint, so istiod can be scheduled onto nodes that still carry it.
- Fixed an issue where a metadata-only update to an Istio config resource, such as a GitOps tool writing an annotation, triggered a push whenever the resource carried any istio.io label or annotation, for example istio.io/rev .
- Fixed a regression where a Telemetry resource in a waypoint’s own namespace, selected by targetRefs or selector , was not applied when the waypoint served a Service in a different namespace.
additions (1)
- Added support for AUTO_PASSTHROUGH listeners on ambient east-west gateways ( istio-east-west GatewayClass ).
A weekly email arrives when a release needs action. Like the security patches in this release.