diff options
| author | Hitendra Prajapati <hprajapati@mvista.com> | 2024-01-17 11:50:30 +0530 |
|---|---|---|
| committer | Steve Sakoman <steve@sakoman.com> | 2024-01-24 04:04:55 -1000 |
| commit | ce477b4d6e1fce61b568cd091563d43c1b40bb18 (patch) | |
| tree | b4f9cff6d87e07e95cdbb5a77e6f6198c23d4b18 | |
| parent | 906af0cb8b86afb595f1b78482634ed4217d491e (diff) | |
| download | poky-ce477b4d6e1fce61b568cd091563d43c1b40bb18.tar.gz | |
openssl: fix CVE-2023-6237 Excessive time spent checking invalid RSA public keys
Upstream-Status: Backport from https://github.com/openssl/openssl/commit/e09fc1d746a4fd15bb5c3d7bbbab950aadd005db
(From OE-Core rev: 6bb64af6ce167eadd34570b061b3e6ed13c39c74)
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
| -rw-r--r-- | meta/recipes-connectivity/openssl/openssl/CVE-2023-6237.patch | 127 | ||||
| -rw-r--r-- | meta/recipes-connectivity/openssl/openssl_3.0.12.bb | 1 |
2 files changed, 128 insertions, 0 deletions
diff --git a/meta/recipes-connectivity/openssl/openssl/CVE-2023-6237.patch b/meta/recipes-connectivity/openssl/openssl/CVE-2023-6237.patch new file mode 100644 index 0000000000..621dc6b0ab --- /dev/null +++ b/meta/recipes-connectivity/openssl/openssl/CVE-2023-6237.patch | |||
| @@ -0,0 +1,127 @@ | |||
| 1 | rom e09fc1d746a4fd15bb5c3d7bbbab950aadd005db Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Tomas Mraz <tomas@openssl.org> | ||
| 3 | Date: Fri, 22 Dec 2023 16:25:56 +0100 | ||
| 4 | Subject: [PATCH] Limit the execution time of RSA public key check | ||
| 5 | |||
| 6 | Fixes CVE-2023-6237 | ||
| 7 | |||
| 8 | If a large and incorrect RSA public key is checked with | ||
| 9 | EVP_PKEY_public_check() the computation could take very long time | ||
| 10 | due to no limit being applied to the RSA public key size and | ||
| 11 | unnecessarily high number of Miller-Rabin algorithm rounds | ||
| 12 | used for non-primality check of the modulus. | ||
| 13 | |||
| 14 | Now the keys larger than 16384 bits (OPENSSL_RSA_MAX_MODULUS_BITS) | ||
| 15 | will fail the check with RSA_R_MODULUS_TOO_LARGE error reason. | ||
| 16 | Also the number of Miller-Rabin rounds was set to 5. | ||
| 17 | |||
| 18 | Reviewed-by: Neil Horman <nhorman@openssl.org> | ||
| 19 | Reviewed-by: Matt Caswell <matt@openssl.org> | ||
| 20 | (Merged from https://github.com/openssl/openssl/pull/23243) | ||
| 21 | |||
| 22 | Upstream-Status: Backport [https://github.com/openssl/openssl/commit/e09fc1d746a4fd15bb5c3d7bbbab950aadd005db] | ||
| 23 | CVE: CVE-2023-6237 | ||
| 24 | Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com> | ||
| 25 | --- | ||
| 26 | crypto/rsa/rsa_sp800_56b_check.c | 8 +++- | ||
| 27 | test/recipes/91-test_pkey_check.t | 2 +- | ||
| 28 | .../91-test_pkey_check_data/rsapub_17k.pem | 48 +++++++++++++++++++ | ||
| 29 | 3 files changed, 56 insertions(+), 2 deletions(-) | ||
| 30 | create mode 100644 test/recipes/91-test_pkey_check_data/rsapub_17k.pem | ||
| 31 | |||
| 32 | diff --git a/crypto/rsa/rsa_sp800_56b_check.c b/crypto/rsa/rsa_sp800_56b_check.c | ||
| 33 | index fc8f19b..bcbdd24 100644 | ||
| 34 | --- a/crypto/rsa/rsa_sp800_56b_check.c | ||
| 35 | +++ b/crypto/rsa/rsa_sp800_56b_check.c | ||
| 36 | @@ -289,6 +289,11 @@ int ossl_rsa_sp800_56b_check_public(const RSA *rsa) | ||
| 37 | return 0; | ||
| 38 | |||
| 39 | nbits = BN_num_bits(rsa->n); | ||
| 40 | + if (nbits > OPENSSL_RSA_MAX_MODULUS_BITS) { | ||
| 41 | + ERR_raise(ERR_LIB_RSA, RSA_R_MODULUS_TOO_LARGE); | ||
| 42 | + return 0; | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | #ifdef FIPS_MODULE | ||
| 46 | /* | ||
| 47 | * (Step a): modulus must be 2048 or 3072 (caveat from SP800-56Br1) | ||
| 48 | @@ -324,7 +329,8 @@ int ossl_rsa_sp800_56b_check_public(const RSA *rsa) | ||
| 49 | goto err; | ||
| 50 | } | ||
| 51 | |||
| 52 | - ret = ossl_bn_miller_rabin_is_prime(rsa->n, 0, ctx, NULL, 1, &status); | ||
| 53 | + /* Highest number of MR rounds from FIPS 186-5 Section B.3 Table B.1 */ | ||
| 54 | + ret = ossl_bn_miller_rabin_is_prime(rsa->n, 5, ctx, NULL, 1, &status); | ||
| 55 | #ifdef FIPS_MODULE | ||
| 56 | if (ret != 1 || status != BN_PRIMETEST_COMPOSITE_NOT_POWER_OF_PRIME) { | ||
| 57 | #else | ||
| 58 | diff --git a/test/recipes/91-test_pkey_check.t b/test/recipes/91-test_pkey_check.t | ||
| 59 | index dc7cc64..f8088df 100644 | ||
| 60 | --- a/test/recipes/91-test_pkey_check.t | ||
| 61 | +++ b/test/recipes/91-test_pkey_check.t | ||
| 62 | @@ -70,7 +70,7 @@ push(@positive_tests, ( | ||
| 63 | "dhpkey.pem" | ||
| 64 | )) unless disabled("dh"); | ||
| 65 | |||
| 66 | -my @negative_pubtests = (); | ||
| 67 | +my @negative_pubtests = ("rsapub_17k.pem"); # Too big RSA public key | ||
| 68 | |||
| 69 | push(@negative_pubtests, ( | ||
| 70 | "dsapub_noparam.der" | ||
| 71 | diff --git a/test/recipes/91-test_pkey_check_data/rsapub_17k.pem b/test/recipes/91-test_pkey_check_data/rsapub_17k.pem | ||
| 72 | new file mode 100644 | ||
| 73 | index 0000000..9a2eaed | ||
| 74 | --- /dev/null | ||
| 75 | +++ b/test/recipes/91-test_pkey_check_data/rsapub_17k.pem | ||
| 76 | @@ -0,0 +1,48 @@ | ||
| 77 | +-----BEGIN PUBLIC KEY----- | ||
| 78 | +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 | ||
| 123 | +AQAB | ||
| 124 | +-----END PUBLIC KEY----- | ||
| 125 | -- | ||
| 126 | 2.25.1 | ||
| 127 | |||
diff --git a/meta/recipes-connectivity/openssl/openssl_3.0.12.bb b/meta/recipes-connectivity/openssl/openssl_3.0.12.bb index 4602151d91..ce0f9fa8e3 100644 --- a/meta/recipes-connectivity/openssl/openssl_3.0.12.bb +++ b/meta/recipes-connectivity/openssl/openssl_3.0.12.bb | |||
| @@ -14,6 +14,7 @@ SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \ | |||
| 14 | file://0001-Configure-do-not-tweak-mips-cflags.patch \ | 14 | file://0001-Configure-do-not-tweak-mips-cflags.patch \ |
| 15 | file://CVE-2023-5678.patch \ | 15 | file://CVE-2023-5678.patch \ |
| 16 | file://CVE-2023-6129.patch \ | 16 | file://CVE-2023-6129.patch \ |
| 17 | file://CVE-2023-6237.patch \ | ||
| 17 | " | 18 | " |
| 18 | 19 | ||
| 19 | SRC_URI:append:class-nativesdk = " \ | 20 | SRC_URI:append:class-nativesdk = " \ |
