// For flags

CVE-2023-29409

Large RSA keys can cause high CPU usage in crypto/tls

Severity Score

5.3
*CVSS v3.1

Exploit Likelihood

*EPSS

Affected Versions

*CPE

Public Exploits

1
*Multiple Sources

Exploited in Wild

-
*KEV

Decision

Track
*SSVC
Descriptions

Extremely large RSA keys in certificate chains can cause a client/server to expend significant CPU time verifying signatures. With fix, the size of RSA keys transmitted during handshakes is restricted to <= 8192 bits. Based on a survey of publicly trusted RSA keys, there are currently only three certificates in circulation with keys larger than this, and all three appear to be test certificates that are not actively deployed. It is possible there are larger keys in use in private PKIs, but we target the web PKI, so causing breakage here in the interests of increasing the default safety of users of crypto/tls seems reasonable.

A denial of service vulnerability was found in the Golang Go package caused by an uncontrolled resource consumption flaw. By persuading a victim to use a specially crafted certificate with large RSA keys, a remote attacker can cause a client/server to expend significant CPU time verifying signatures, resulting in a denial of service condition.

*Credits: Mateusz Poliwczak
CVSS Scores
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low
* Common Vulnerability Scoring System
SSVC
  • Decision:Track
Exploitation
None
Automatable
No
Tech. Impact
Partial
* Organization's Worst-case Scenario
Timeline
  • 2023-04-05 CVE Reserved
  • 2023-08-02 CVE Published
  • 2023-08-21 First Exploit
  • 2024-10-22 CVE Updated
  • 2024-11-06 EPSS Updated
  • ---------- Exploited in Wild
  • ---------- KEV Due Date
CWE
  • CWE-400: Uncontrolled Resource Consumption
CAPEC
Affected Vendors, Products, and Versions
Vendor Product Version Other Status
Vendor Product Version Other Status <-- --> Vendor Product Version Other Status
Golang
Search vendor "Golang"
Go
Search vendor "Golang" for product "Go"
< 1.19.12
Search vendor "Golang" for product "Go" and version " < 1.19.12"
-
Affected
Golang
Search vendor "Golang"
Go
Search vendor "Golang" for product "Go"
>= 1.20.0 < 1.20.7
Search vendor "Golang" for product "Go" and version " >= 1.20.0 < 1.20.7"
-
Affected
Golang
Search vendor "Golang"
Go
Search vendor "Golang" for product "Go"
1.21.0
Search vendor "Golang" for product "Go" and version "1.21.0"
rc1
Affected
Golang
Search vendor "Golang"
Go
Search vendor "Golang" for product "Go"
1.21.0
Search vendor "Golang" for product "Go" and version "1.21.0"
rc2
Affected
Golang
Search vendor "Golang"
Go
Search vendor "Golang" for product "Go"
1.21.0
Search vendor "Golang" for product "Go" and version "1.21.0"
rc3
Affected