The Ghost in the Handshake: Traefik & Go mTLS Bypass in HTTP/3
Vulnerability ID: GHSA-GV8R-9RW9-9697
CVSS Score: 10.0
Published: 2026-02-20
A critical vulnerability in the Go standard library's crypto/tls package, affecting the popular Traefik proxy, allows attackers to bypass mutual TLS (mTLS) client authentication. This issue specifically targets HTTP/3 (QUIC) connections leveraging TLS 1.3 session resumption. By exploiting a logic flaw in how Go handles configuration changes during session resumption, a client with a previously valid certificate (or a stolen session ticket) can bypass current access control lists, effectively rendering 'Zero Trust' architectures null and void.
TL;DR
A flaw in Go's TLS library allows HTTP/3 clients to bypass Client Authentication (mTLS) in Traefik. If a server updates its trusted CAs, a client can simply 'resume' an old session to bypass the new restrictions. It's like using an expired hand-stamp to re-enter a club after the bouncers changed the rules.
⚠️ Exploit Status: POC
Technical Details
- CVE ID: CVE-2025-68121
- CVSS Severity: 10.0 (Critical)
- Attack Vector: Network (Session Resumption)
- Affected Component: Go crypto/tls (HTTP/3)
- Impact: Authentication Bypass (mTLS)
- Exploit Status: PoC Available
- EPSS Score: 0.00016 (Rising)
Affected Systems
- Traefik Proxy (v2.x <= 2.11.36)
- Traefik Proxy (v3.x <= 3.6.7)
- Kubernetes Ingress Controllers using affected Traefik versions
- Custom Go applications using crypto/tls and HTTP/3
-
Traefik: <= 2.11.36 (Fixed in:
2.11.37) -
Traefik: <= 3.6.7 (Fixed in:
3.6.8) -
Go Standard Library: < 1.24.13 (Fixed in:
1.24.13)
Code Analysis
Commit: b2f0a1e
crypto/tls: verify client CA on resumption
func (c *Conn) resumeSession() { ... if !c.config.ClientCAs.Contains(cert) { return fail } ... }
Exploit Details
- Internal Research: Go Issue Tracker discussion detailing the reproduction steps.
- GitHub Advisory: Traefik advisory confirming the vector via HTTP/3.
Mitigation Strategies
- Upgrade Traefik to the latest patched version immediately.
- Recompile custom Go applications using Go 1.24.13+ or 1.25.7+.
- Disable HTTP/3 (QUIC) support in Traefik if patching is delayed.
- Disable TLS Session Resumption if Client Authentication is critical and patching is impossible.
Remediation Steps:
- Identify all Traefik instances handling mTLS (ClientAuth).
- Check current version:
traefik version. - If version is <= v2.11.36 or <= v3.6.7, schedule immediate maintenance.
- Deploy v2.11.37 or v3.6.8.
- Verify the fix by attempting to resume a session after rotating CAs (if you have a test suite).
References
Read the full report for GHSA-GV8R-9RW9-9697 on our website for more details including interactive diagrams and full exploit analysis.
Top comments (0)