CVE-2025-68121
📋 TL;DR
This vulnerability in Go's crypto/tls package allows TLS session resumption to succeed when it should fail due to certificate authority configuration changes between handshakes. It affects Go applications that use TLS session resumption with mutable Config objects, potentially allowing clients or servers to resume sessions with untrusted parties.
💻 Affected Systems
- Go programming language
📦 What is this software?
Go by Golang
Go by Golang
Go by Golang
Go by Golang
⚠️ Risk & Real-World Impact
Worst Case
An attacker could establish a TLS session with a legitimate server, then resume that session after the server's trusted CA list has been modified, allowing the attacker to maintain encrypted communication even after being removed from the trust list.
Likely Case
Accidental session resumption with servers or clients that should no longer be trusted due to configuration changes, potentially bypassing intended security controls.
If Mitigated
Limited impact if applications don't use session resumption or properly manage Config objects without mutation.
🎯 Exploit Status
Exploitation requires ability to trigger TLS session resumption and control over Config mutation timing.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Go 1.23.3
Vendor Advisory: https://groups.google.com/g/golang-announce/c/K09ubi9FQFk
Restart Required: Yes
Instructions:
1. Update Go to version 1.23.3 or later. 2. Recompile affected applications. 3. Redeploy updated applications. 4. Restart services using the patched Go runtime.
🔧 Temporary Workarounds
Disable TLS session resumption
allConfigure applications to disable TLS session resumption entirely
// In Go code: config.SessionTicketsDisabled = true
Avoid Config mutation
allEnsure Config objects are not mutated between initial and resumed handshakes
// Do not modify ClientCAs or RootCAs fields after initial handshake
🧯 If You Can't Patch
- Disable TLS session resumption in all affected applications
- Implement monitoring for unexpected session resumptions and review Config mutation patterns
🔍 How to Verify
Check if Vulnerable:
Check if application uses Go 1.23.0-1.23.2 and employs TLS session resumption with Config.Clone() or Config.GetConfigForClient() that mutates CA fields.
Check Version:
go version
Verify Fix Applied:
Verify Go version is 1.23.3 or later and application has been recompiled with updated Go toolchain.
📡 Detection & Monitoring
Log Indicators:
- Unexpected successful TLS session resumptions after CA configuration changes
- TLS handshake failures followed by successful resumptions
Network Indicators:
- TLS session tickets being reused after trust configuration changes
SIEM Query:
Search for TLS handshake patterns where session resumption succeeds shortly after CA configuration modifications