Issue summary: Checking excessively long invalid RSA public keys may take a long time.
Impact summary: Applications that use the function EVP_PKEY_public_check() to check RSA public keys may experience long delays. Where the key that is being checked has been obtained from an untrusted source this may lead to a Denial of Service.
When function EVP_PKEY_public_check() is called on RSA public keys, a computation is done to confirm that the RSA modulus, n, is composite. For valid RSA keys, n is a product of two or more large primes and this computation completes quickly. However, if n is an overly large prime, then this computation would take a long time.
An application that calls EVP_PKEY_public_check() and supplies an RSA key obtained from an untrusted source could be vulnerable to a Denial of Service attack.
The function EVP_PKEY_public_check() is not called from other OpenSSL functions however it is called from the OpenSSL pkey command line application. For that reason that application is also vulnerable if used with the -pubin and -check options on untrusted data.
The OpenSSL SSL/TLS implementation is not affected by this issue.
The OpenSSL 3.0 and 3.1 FIPS providers are affected by this issue.
The product does not properly check inputs that are used for loop conditions, potentially leading to a denial of service or other consequences because of excessive looping.
Name | Vendor | Start Version | End Version |
---|---|---|---|
Red Hat Enterprise Linux 9 | RedHat | openssl-1:3.0.7-27.el9 | * |
Red Hat Enterprise Linux 9 | RedHat | edk2-0:20240524-6.el9_5 | * |
Red Hat Enterprise Linux 9 | RedHat | openssl-1:3.0.7-27.el9 | * |
Edk2 | Ubuntu | bionic | * |
Edk2 | Ubuntu | devel | * |
Edk2 | Ubuntu | noble | * |
Edk2 | Ubuntu | oracular | * |
Edk2 | Ubuntu | trusty | * |
Edk2 | Ubuntu | xenial | * |
Nodejs | Ubuntu | jammy | * |
Nodejs | Ubuntu | trusty | * |
Openssl | Ubuntu | bionic | * |
Openssl | Ubuntu | devel | * |
Openssl | Ubuntu | fips-preview/jammy | * |
Openssl | Ubuntu | fips-updates/jammy | * |
Openssl | Ubuntu | jammy | * |
Openssl | Ubuntu | lunar | * |
Openssl | Ubuntu | mantic | * |
Openssl | Ubuntu | noble | * |
Openssl | Ubuntu | oracular | * |
Openssl | Ubuntu | trusty | * |
Openssl | Ubuntu | upstream | * |
Openssl | Ubuntu | xenial | * |
Openssl1.0 | Ubuntu | bionic | * |