Fix CVEs for openssl
cover Fix CVEs for openssl
From: Kai Kang <[email protected]>
Fix CVEs for openssl:
1.0.2p:
* CVE-2018-0734
1.1.1:
* CVE-2018-0734
* CVE-2018-0735
The following changes since commit 411184bfaa6269bf2926bb2a576c0922958cbbb3:
xserver-xorg: fix CVE-2018-14665 (2018-11-01 13:27:26 +0000)
are available in the Git repository at:
git://git.pokylinux.org/poky-contrib kangkai/cve
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=kangkai/cve
Kai Kang (2):
openssl: fix CVE-2018-0734 for both 1.0.2p and 1.1.1
openssl: fix CVE-2018-0735 for 1.1.1
.../openssl/0002-fix-CVE-2018-0734.patch | 108 ++++++++++++++++++ .../openssl/0003-fix-CVE-2018-0735.patch | 50 ++++++++ .../openssl10/0001-fix-CVE-2018-0734.patch | 33 ++++++ .../openssl/openssl10_1.0.2p.bb | 1 + .../openssl/openssl_1.1.1.bb | 2 + 5 files changed, 194 insertions(+) create mode 100644 meta/recipes-connectivity/openssl/openssl/0002-fix-CVE-2018-0734.patch create mode 100644 meta/recipes-connectivity/openssl/openssl/0003-fix-CVE-2018-0735.patch create mode 100644 meta/recipes-connectivity/openssl/openssl10/0001-fix-CVE-2018-0734.patch
Signature · 1 line
2.18.0
PATCH 1/2 openssl: fix CVE-2018-0734 for both 1.0.2p and 1.1.1
From: Kai Kang <[email protected]>
Backport patches to fix CVE-2018-0734 for both openssl 1.0.2p and 1.1.1 versions.
--- .../openssl/0002-fix-CVE-2018-0734.patch | 108 ++++++++++++++++++ .../openssl10/0001-fix-CVE-2018-0734.patch | 33 ++++++ .../openssl/openssl10_1.0.2p.bb | 1 + .../openssl/openssl_1.1.1.bb | 1 + 4 files changed, 143 insertions(+) create mode 100644 meta/recipes-connectivity/openssl/openssl/0002-fix-CVE-2018-0734.patch create mode 100644 meta/recipes-connectivity/openssl/openssl10/0001-fix-CVE-2018-0734.patch
meta/recipes-connectivity/openssl/openssl/0002-fix-CVE-2018-0734.patch new file +108 -0
@@ -0,0 +1,108 @@ +Backport patch to fix CVE-2018-0734. Remove a section which only remove a +space. It can't be applied because the context is different. + +CVE: CVE-2018-0734 +Upstream-Status: Backport + +Signed-off-by: Kai Kang <[email protected]> + +From 8abfe72e8c1de1b95f50aa0d9134803b4d00070f Mon Sep 17 00:00:00 2001 +From: Pauli <[email protected]> +Date: Wed, 24 Oct 2018 07:42:46 +1000 +Subject: [PATCH] Timing vulnerability in DSA signature generation + (CVE-2018-0734). + +Avoid a timing attack that leaks information via a side channel that +triggers when a BN is resized. Increasing the size of the BNs +prior to doing anything with them suppresses the attack. + +Thanks due to Samuel Weiser for finding and locating this. + +Reviewed-by: Bernd Edlinger <[email protected]> +(Merged from https://github.com/openssl/openssl/pull/7486) + +(cherry picked from commit a9cfb8c2aa7254a4aa6a1716909e3f8cb78049b6) +--- + crypto/dsa/dsa_ossl.c | 28 +++++++++++++++------------- + 1 file changed, 15 insertions(+), 13 deletions(-) + +diff --git a/crypto/dsa/dsa_ossl.c b/crypto/dsa/dsa_ossl.c +index ca20811200..2dd2d7489a 100644 +--- a/crypto/dsa/dsa_ossl.c ++++ b/crypto/dsa/dsa_ossl.c +@@ -9,6 +9,7 @@ + + #include <stdio.h> + #include "internal/cryptlib.h" ++#include "internal/bn_int.h" + #include <openssl/bn.h> + #include <openssl/sha.h> + #include "dsa_locl.h" +@@ -180,9 +181,9 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, + { + BN_CTX *ctx = NULL; + BIGNUM *k, *kinv = NULL, *r = *rp; +- BIGNUM *l, *m; ++ BIGNUM *l; + int ret = 0; +- int q_bits; ++ int q_bits, q_words; + + if (!dsa->p || !dsa->q || !dsa->g) { + DSAerr(DSA_F_DSA_SIGN_SETUP, DSA_R_MISSING_PARAMETERS); +@@ -191,8 +192,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, + + k = BN_new(); + l = BN_new(); +- m = BN_new(); +- if (k == NULL || l == NULL || m == NULL) ++ if (k == NULL || l == NULL) + goto err; + + if (ctx_in == NULL) { +@@ -203,9 +203,9 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, + + /* Preallocate space */ + q_bits = BN_num_bits(dsa->q); +- if (!BN_set_bit(k, q_bits) +- || !BN_set_bit(l, q_bits) +- || !BN_set_bit(m, q_bits)) ++ q_words = bn_get_top(dsa->q); ++ if (!bn_wexpand(k, q_words + 2) ++ || !bn_wexpand(l, q_words + 2)) + goto err; + + /* Get random k */ +@@ -240,14 +240,17 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, + * small timing information leakage. We then choose the sum that is + * one bit longer than the modulus. + * +- * TODO: revisit the BN_copy aiming for a memory access agnostic +- * conditional copy. ++ * There are some concerns about the efficacy of doing this. More ++ * specificly refer to the discussion starting with: ++ * https://github.com/openssl/openssl/pull/7486#discussion_r228323705 ++ * The fix is to rework BN so these gymnastics aren't required. + */ + if (!BN_add(l, k, dsa->q) +- || !BN_add(m, l, dsa->q) +- || !BN_copy(k, BN_num_bits(l) > q_bits ? l : m)) ++ || !BN_add(k, l, dsa->q)) + goto err; + ++ BN_consttime_swap(BN_is_bit_set(l, q_bits), k, l, q_words + 2); ++ + if ((dsa)->meth->bn_mod_exp != NULL) { + if (!dsa->meth->bn_mod_exp(dsa, r, dsa->g, k, dsa->p, ctx, + dsa->method_mont_p)) +@@ -275,7 +278,6 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, + BN_CTX_free(ctx); + BN_clear_free(k); + BN_clear_free(l); +- BN_clear_free(m); + return ret; + } + +-- +2.17.0 +
meta/recipes-connectivity/openssl/openssl10/0001-fix-CVE-2018-0734.patch new file +33 -0
@@ -0,0 +1,33 @@ +CVE: CVE-2018-0734 + +Upstream-Status: Backport + +Signed-off-by: Kai Kang <[email protected]> + +From 43e6a58d4991a451daf4891ff05a48735df871ac Mon Sep 17 00:00:00 2001 +From: Pauli <[email protected]> +Date: Mon, 29 Oct 2018 08:24:22 +1000 +Subject: [PATCH] Merge DSA reallocation timing fix CVE-2018-0734. + +Reviewed-by: Richard Levitte <[email protected]> +(Merged from https://github.com/openssl/openssl/pull/7513) +--- + crypto/dsa/dsa_ossl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/crypto/dsa/dsa_ossl.c b/crypto/dsa/dsa_ossl.c +index 2dcfedeeee..100e269268 100644 +--- a/crypto/dsa/dsa_ossl.c ++++ b/crypto/dsa/dsa_ossl.c +@@ -279,7 +279,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, + goto err; + + /* Preallocate space */ +- q_bits = BN_num_bits(dsa->q); ++ q_bits = BN_num_bits(dsa->q) + sizeof(dsa->q->d[0]) * 16; + if (!BN_set_bit(&k, q_bits) + || !BN_set_bit(&l, q_bits) + || !BN_set_bit(&m, q_bits)) +-- +2.17.0 +
meta/recipes-connectivity/openssl/openssl10_1.0.2p.bb +1 -0
@@ -40,6 +40,7 @@ SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \ file://0001-Fix-build-with-clang-using-external-assembler.patch \ file://0001-openssl-force-soft-link-to-avoid-rare-race.patch \ file://0001-allow-manpages-to-be-disabled.patch \ + file://0001-fix-CVE-2018-0734.patch \ " SRC_URI_append_class-target = " \
meta/recipes-connectivity/openssl/openssl_1.1.1.bb +1 -0
@@ -15,6 +15,7 @@ SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \ file://run-ptest \ file://openssl-c_rehash.sh \ file://0001-skip-test_symbol_presence.patch \ + file://0002-fix-CVE-2018-0734.patch \ " SRC_URI_append_class-nativesdk = " \
Signature · 1 line
2.18.0
PATCH 2/2 openssl: fix CVE-2018-0735 for 1.1.1
In reply to [email protected]From: Kai Kang <[email protected]>
Backport patch to fix CVE-2018-0735 for openssl 1.1.1.
--- .../openssl/0003-fix-CVE-2018-0735.patch | 50 +++++++++++++++++++ .../openssl/openssl_1.1.1.bb | 1 + 2 files changed, 51 insertions(+) create mode 100644 meta/recipes-connectivity/openssl/openssl/0003-fix-CVE-2018-0735.patch
meta/recipes-connectivity/openssl/openssl/0003-fix-CVE-2018-0735.patch new file +50 -0
@@ -0,0 +1,50 @@ +CVE: CVE-2018-0735 + +Upstream-Status: Backport + +Signed-off-by: Kai Kang <[email protected]> + +From b1d6d55ece1c26fa2829e2b819b038d7b6d692b4 Mon Sep 17 00:00:00 2001 +From: Pauli <[email protected]> +Date: Fri, 26 Oct 2018 10:54:58 +1000 +Subject: [PATCH] Timing vulnerability in ECDSA signature generation + (CVE-2018-0735) + +Preallocate an extra limb for some of the big numbers to avoid a reallocation +that can potentially provide a side channel. + +Reviewed-by: Bernd Edlinger <[email protected]> +(Merged from https://github.com/openssl/openssl/pull/7486) + +(cherry picked from commit 99540ec79491f59ed8b46b4edf130e17dc907f52) +--- + crypto/ec/ec_mult.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/crypto/ec/ec_mult.c b/crypto/ec/ec_mult.c +index 7e1b3650e7..0e0a5e1394 100644 +--- a/crypto/ec/ec_mult.c ++++ b/crypto/ec/ec_mult.c +@@ -206,8 +206,8 @@ int ec_scalar_mul_ladder(const EC_GROUP *group, EC_POINT *r, + */ + cardinality_bits = BN_num_bits(cardinality); + group_top = bn_get_top(cardinality); +- if ((bn_wexpand(k, group_top + 1) == NULL) +- || (bn_wexpand(lambda, group_top + 1) == NULL)) { ++ if ((bn_wexpand(k, group_top + 2) == NULL) ++ || (bn_wexpand(lambda, group_top + 2) == NULL)) { + ECerr(EC_F_EC_SCALAR_MUL_LADDER, ERR_R_BN_LIB); + goto err; + } +@@ -244,7 +244,7 @@ int ec_scalar_mul_ladder(const EC_GROUP *group, EC_POINT *r, + * k := scalar + 2*cardinality + */ + kbit = BN_is_bit_set(lambda, cardinality_bits); +- BN_consttime_swap(kbit, k, lambda, group_top + 1); ++ BN_consttime_swap(kbit, k, lambda, group_top + 2); + + group_top = bn_get_top(group->field); + if ((bn_wexpand(s->X, group_top) == NULL) +-- +2.17.0 +
meta/recipes-connectivity/openssl/openssl_1.1.1.bb +1 -0
@@ -16,6 +16,7 @@ SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \ file://openssl-c_rehash.sh \ file://0001-skip-test_symbol_presence.patch \ file://0002-fix-CVE-2018-0734.patch \ + file://0003-fix-CVE-2018-0735.patch \ " SRC_URI_append_class-nativesdk = " \
Signature · 1 line
2.18.0