blob: 0663f5a001cf3a8757ad540448cc0e662c95d794 [file] [log] [blame]
id: GO-2023-2375
modules:
- module: std
versions:
- fixed: 1.20.0
vulnerable_at: 1.19.0
packages:
- package: crypto/tls
symbols:
- rsaKeyAgreement.processClientKeyExchange
- rsaKeyAgreement.generateClientKeyExchange
derived_symbols:
- Conn.Handshake
- Conn.HandshakeContext
- Conn.Read
- Conn.Write
- Dial
- DialWithDialer
- Dialer.Dial
- Dialer.DialContext
summary: |-
Before Go 1.20, the RSA based key exchange methods in crypto/tls may exhibit a
timing side channel
description: |-
Before Go 1.20, the RSA based TLS key exchanges used the math/big library, which
is not constant time. RSA blinding was applied to prevent timing attacks, but
analysis shows this may not have been fully effective. In particular it appears
as if the removal of PKCS#1 padding may leak timing information, which in turn
could be used to recover session key bits.
In Go 1.20, the crypto/tls library switched to a fully constant time RSA
implementation, which we do not believe exhibits any timing side channels.
references:
- report: https://go.dev/issue/20654
- fix: https://go.dev/cl/326012/26
- web: https://groups.google.com/g/golang-announce/c/QMK8IQALDvA
- article: https://people.redhat.com/~hkario/marvin/
cve_metadata:
id: CVE-2023-45287
cwe: 'CWE-208: Observable Timing Discrepancy'
references:
- https://security.netapp.com/advisory/ntap-20240112-0005/