CVE-2025-66491

5.9 MEDIUM

📋 TL;DR

Traefik versions 3.5.0 through 3.6.2 have inverted TLS verification logic in the nginx.ingress.kubernetes.io/proxy-ssl-verify annotation. Setting the annotation to 'on' (intending to enable backend TLS certificate verification) actually disables verification, allowing man-in-the-middle attacks against HTTPS backends when operators believe they are protected. This affects anyone using Traefik as a reverse proxy with the affected annotation configured.

💻 Affected Systems

Products:
  • Traefik
Versions: 3.5.0 through 3.6.2
Operating Systems: All
Default Config Vulnerable: ✅ No
Notes: Only affects configurations using the nginx.ingress.kubernetes.io/proxy-ssl-verify annotation with value 'on' or 'off'. The annotation must be explicitly set to be vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers intercept and manipulate all HTTPS traffic between Traefik and backend services, potentially stealing sensitive data, injecting malicious content, or redirecting traffic to malicious servers.

🟠

Likely Case

Man-in-the-middle attackers can eavesdrop on HTTPS traffic between Traefik and backends, potentially capturing authentication tokens, session cookies, or other sensitive data.

🟢

If Mitigated

With proper network segmentation and internal certificate authorities, risk is reduced but still present if external attackers gain internal network access.

🌐 Internet-Facing: MEDIUM
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires network access to intercept traffic between Traefik and backend services. The vulnerability itself is simple to exploit once an attacker has the required network position.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 3.6.3

Vendor Advisory: https://github.com/traefik/traefik/security/advisories/GHSA-7vww-mvcr-x6vj

Restart Required: Yes

Instructions:

1. Update Traefik to version 3.6.3 or later. 2. Restart Traefik pods/containers. 3. Verify the annotation behavior is now correct.

🔧 Temporary Workarounds

Remove or invert annotation

all

Remove the nginx.ingress.kubernetes.io/proxy-ssl-verify annotation entirely or set it to 'off' (which will actually enable verification due to the bug).

kubectl annotate ingress <ingress-name> nginx.ingress.kubernetes.io/proxy-ssl-verify=off --overwrite
kubectl annotate ingress <ingress-name> nginx.ingress.kubernetes.io/proxy-ssl-verify-

🧯 If You Can't Patch

  • Use mutual TLS (mTLS) between Traefik and backends with certificate pinning or custom certificate authorities.
  • Implement network-level protections like VLAN segmentation or firewall rules to prevent man-in-the-middle attacks between Traefik and backends.

🔍 How to Verify

Check if Vulnerable:

Check if Traefik version is between 3.5.0 and 3.6.2 inclusive AND the nginx.ingress.kubernetes.io/proxy-ssl-verify annotation is set to 'on' on any ingress resources.

Check Version:

traefik version

Verify Fix Applied:

After updating to 3.6.3+, verify that setting nginx.ingress.kubernetes.io/proxy-ssl-verify='on' properly enables TLS verification (connections should fail with invalid certificates).

📡 Detection & Monitoring

Log Indicators:

  • Traefik logs showing successful connections to backends with invalid or self-signed certificates when proxy-ssl-verify is set to 'on'
  • Unexpected certificate validation errors when proxy-ssl-verify is set to 'off'

Network Indicators:

  • Unencrypted traffic between Traefik and backends that should be HTTPS
  • Traffic to unexpected IP addresses from Traefik to backends

SIEM Query:

source="traefik" AND ("certificate" OR "TLS" OR "SSL") AND ("verify" OR "validation")

🔗 References

📤 Share & Export