
oss-sec mailing list archives
Re: OpenSSL Security Advisory
From: Jeffrey Walton <noloader () gmail com>
Date: Wed, 19 Jul 2023 09:33:47 -0400
On Wed, Jul 19, 2023 at 7:38 AM Tomas Mraz <tomas () openssl org> wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 OpenSSL Security Advisory [19th July 2023] ========================================== Excessive time spent checking DH keys and parameters (CVE-2023-3446) ==================================================================== Severity: Low Issue summary: Checking excessively long DH keys or parameters may be very slow. Impact summary: Applications that use the functions DH_check(), DH_check_ex() or EVP_PKEY_param_check() to check a DH key or DH parameters may experience long delays. Where the key or parameters that are being checked have been obtained from an untrusted source this may lead to a Denial of Service. The function DH_check() performs various checks on DH parameters. One of those checks confirms that the modulus ("p" parameter) is not too large. Trying to use a very large modulus is slow and OpenSSL will not normally use a modulus which is over 10,000 bits in length. However the DH_check() function checks numerous aspects of the key or parameters that have been supplied. Some of those checks use the supplied modulus value even if it has already been found to be too large. An application that calls DH_check() and supplies a key or parameters obtained from an untrusted source could be vulnerable to a Denial of Service attack. The function DH_check() is itself called by a number of other OpenSSL functions. An application calling any of those other functions may similarly be affected. The other functions affected by this are DH_check_ex() and EVP_PKEY_param_check(). Also vulnerable are the OpenSSL dhparam and pkeyparam command line applications when using the "-check" option. [...]
It is not clear (to me) what the actual issue being flagged is. Whenever an application receives security parameters from an untrusted source, the parameters must be validated. You never apply a transformation to a message using key material that has not been validated. So calling DH_check() and friends on untrusted DH parameters is perfectly reasonable. In fact, if untrusted parameters are not validated, then I would consider that a security bug. I guess that leaves calling DH_check() multiple times on the same [untrusted] parameters? Or maybe calling DH_check() on trusted parameters generated by the program itself? Or maybe something else? Another possibility is, OpenSSL should reject parameters if the prime field is too large, for some definition of "too large". In this case, I would argue it is _not_ OpenSSL's place to make that decision. That's a policy decision that must be made by the application using the OpenSSL library. In this case, maybe OpenSSL needs a configuration parameter or user API to reject prime fields larger than a certain size, like 4096- or 8192-bits. Jeff
Current thread:
- OpenSSL Security Advisory Tomas Mraz (Jul 15)
- <Possible follow-ups>
- OpenSSL Security Advisory Tomas Mraz (Jul 19)
- Re: OpenSSL Security Advisory Sandipan Roy (Jul 19)
- Re: OpenSSL Security Advisory Jeffrey Walton (Jul 19)
- OpenSSL Security Advisory Matt Caswell (Jul 31)
- OpenSSL Security Advisory Tomas Mraz (Sep 08)
- Re: OpenSSL Security Advisory Alex Gaynor (Sep 08)