GITHUB.COM/TRAEFIK/TRAEFIK/V2 · GHSA-rh7m-2m44-x32f · Infrastructure
FIX → v2.11.46 · v3.7.1 +1
Traefik's Kubernetes Ingress and Service annotations accept references to Middlewares, ServersTransports and TLSOptions in other namespaces without the namespace check that the CRD provider applies. A user who can create Ingress or Service resources in one namespace can reuse another tenant's middleware, such as one injecting an API token, or a client certificate configured in a ServersTransport.
first public Oct 5, 2026 · 1 source
Could this affect your app?
Free first check from your website. Connect your repo for the full answer.
Clusters running Traefik with the Kubernetes Ingress provider in multi-tenant setups, where some users can create or modify Ingress or Service resources in their own namespace. The risk comes from annotation-based references into other namespaces, so single-tenant clusters where every user is trusted are less exposed. Teams that only use the Kubernetes CRD provider with cross-namespace disabled are not affected by this annotation path.
Not affected if crd-provider-only, managed-hosting, single-tenant-cluster
Who cares go, kubernetes, multi-tenant, traefik
traefik version or check the image tag to find the Traefik version, and compare it with the fixed versions.kubernetesIngress provider is in use and whether untrusted users can create or update Ingress or Service resources in any namespace.There is a medium severity vulnerability in Traefik's Kubernetes Ingress provider that allows an actor with permission to create or update Ingress or Service resources in one namespace to reference Middleware, ServersTransport, and TLSOption resources from other namespaces through annotations. Unlike the Kubernetes CRD provider, which rejects such references when allowCrossNamespace is disabled, the annotation path performs no namespace validation, partially bypassing namespace-based tenant isolation. In multi-tenant clusters, this can expose another tenant's secrets, such as credentials injected by a Headers middleware or a client certificate configured in a ServersTransport. The fix introduces the crossProviderNamespaces option on the Kubernetes providers, which must be explicitly set to restrict which namespaces are allowed to use cross-provider references; when it is left unset, all namespaces remain allowed.
Check it with your coding agent
It reads this page and tells you if your code is affected.
Are you affected?
Ask from here. InfraStack checks the affected versions against your stack and answers in your inbox.
InfraStack checks the affected versions against your stack and answers in Slack, with the evidence and the fix.
router.middlewares, service.serverstransport or TLS option annotations on Ingress and Service objects that point to another namespace.Upgrade to v2.11.46 · v3.7.1 +1
2.11.463.6.173.7.1crossProviderNamespaces option on the Kubernetes providers to restrict which namespaces may use cross-provider references; when unset, all namespaces remain allowed.If you have any questions or comments about this advisory, please open an issue.
Traefik in Kubernetes (K8s) allows cross-namespace access to Traefik resources when using Annotations on Ingress and Service resources.
When using the Ingress and Service Annotations, it is possible to reference Middlewares, ServersTransports, and TLSOptions from foreign namespaces. While this is disallowed by default for Traefik's Kubernetes CRDs (by the Configuration Option providers.kubernetesCRD.allowCrossNamespace), no validation is done when using Annotations on K8s Ingress and Service resources.
An attacker can include these resources in an Ingress or Service configuration and thereby partially bypassing namespace-based tenant isolation. In certain cases, this will give an attacker access to data of services in other namespaces, for instance:
The vulnerability was tested in the current Traefik version v3.6.5. Older versions are affected, too.
Ingress and Service Annotations are vulnerable. There is no check implemented in:
Traefik's Kubernetes CRDs are not vulnerable and prevent cross namespace access:
kubernetesIngress provider is enabled by defaultAn attacker can include Middlewares, ServersTransports, and TLSOptions resources from foreign namespaces in their own Ingress or Service configuration, thereby partially bypassing namespace-based tenant isolation. In certain cases, this will give an attacker access to data of services in other namespaces.
The following descriptions explain the exploitation in detail for the two affected resource types Middleware and ServersTransport.
The proof of concept (PoC) was tested in a Traefik setup installed via Helm chart in version 37.4.0, but with the most recent Traefik app version v3.6.5 and the default configuration. See the test setup section for details.
The following steps demonstrate the problem with the affected router.middlewares annotation.
This PoC even works with restrictive Network Policies set.
First, the namespaces traefik-victim and traefik-attacker are created:
kubectl create namespace traefik-victim
kubectl create namespace traefik-attacker
namespace/traefik-victim created
namespace/traefik-attacker created
In the next steps, the resources in the victim.yaml are created in the namespace traefik-victim, and the resources in the attacker.yaml are created in the namespace traefik-attacker.
This step creates some resources to simulate a typical vulnerable setup with an application that uses Traefik and Ingress.
The victim.yaml creates an Ingress resource with the name traefik-ingress in the namespace traefik-victim. The Ingress exposes the victim's application under the hostname `traefik