CVE-2023-45287: Timing Side Channel Vulnerability in Go stdlib

stdlib Updated 02 Oct 2025

Summary

05/12/2023
Yes i
Unrated
Not published

CVE-2023-45287: Before Go 1.20, the RSA based key exchange methods in crypto/tls may exhibit a timing side channel. Affects stdlib versions < 1.20.0. Fixed in 1.20.0. How to fix ↓

Also tracked for

The same CVE-2023-45287 is tracked separately for each ecosystem and vendor. Its fix information is the same; the package and affected versions differ.

Free scan

Check if this vulnerability affects your application

Upload a manifest or SBOM and we'll show whether you're affected, plus every other risky package in the same scan.

Check my app free

No signup required · Results in about 60 seconds

Sponsored MarkAI Find prospects already talking about the problem you solve AI watches the communities your customers use to find qualified prospects, then alerts you when a conversation is worth joining. See MarkAI

Background

The Go stdlib package is a collection of standard libraries that provide fundamental functionality for Go programs. It includes various modules for cryptography, networking, file handling, and more. The crypto/tls module within the stdlib package is responsible for implementing secure communication over the Transport Layer Security (TLS) protocol. This vulnerability affects versions of Go prior to 1.20.

Vulnerability Detail

Before Go 1.20, the RSA based key exchange methods in crypto/tls may exhibit a timing side channel. The RSA key exchanges in earlier versions of Go used the math/big library, which is not constant time. Although RSA blinding was applied to mitigate timing attacks, further analysis reveals that it may not have been fully effective. The removal of PKCS#1 padding appears to leak timing information, potentially allowing an attacker to recover session key bits. However, in Go 1.20, the crypto/tls library switched to a fully constant time RSA implementation, eliminating any known timing side channels.

How To Fix

Latest published version: go1.25.5 as of 22 Oct 2026

go get stdlib@vgo1.25.5

Upgrading to it may include breaking changes; the version below is the minimum fixed release for this vulnerability.

If you need the minimum change

1.20.0

This is the first release that contains the fix.

go get stdlib@v1.20.0

Tip — Not sure which version your app runs? Vulert can match this fix to it. Scan free →

Workaround

There is no known workaround for this vulnerability. It is essential to update to the fixed version of Go to mitigate the timing side channel issue.

Conclusion

The timing side channel vulnerability in the RSA based key exchange methods of the crypto/tls module in Go stdlib has been addressed in Go version 1.20.0. It is crucial for developers to update their Go installations and rebuild affected applications to ensure the absence of timing side channels. For further support on vulnerability remediation, please contact DevNack.com.

See every vulnerability recorded for stdlib →

Share this vulnerability

FAQ

The vulnerability could potentially allow an attacker to recover session key bits, compromising the security of encrypted communications.

Versions of Go prior to 1.20 are affected. It is recommended to update to Go 1.20.0 or later.

There are no known exploits for this vulnerability at the time of this report.

Yes, updating to Go 1.20.0 or later fixes this vulnerability by switching to a constant time RSA implementation.

Yes, you can use the Vulert Playground at Vulert Scanner to check if your application is affected by this vulnerability without any signup or installation. Vulert monitors and alerts in real-time for open-source vulnerabilities, using Gopkg.lock as input.

Related vulnerabilities

Recent vulnerabilities recorded for stdlib.

How To Fix

Latest published version: go1.25.5 as of 22 Oct 2026

go get stdlib@vgo1.25.5

Upgrading to it may include breaking changes; the version below is the minimum fixed release for this vulnerability.

If you need the minimum change

1.20.0

This is the first release that contains the fix.

go get stdlib@v1.20.0

Tip — Not sure which version your app runs? Vulert can match this fix to it. Scan free →

Subscribe to Vulert on Telegram
Daily digest of new CVEs, critical and high severity, affected packages and fixes — plus a weekly roundup.
Join the channel →
Help improve this record
Report an issue or send feedback