Jethro-next openssl security fixes
cover Jethro-next openssl security fixes
please consider these two openssl security issues for the next jethro update
The following changes since commit d2afba471039f94cf251f40298a51dbd640d4e93:
qemu: Security fix CVE-2015-7295 (2016-01-29 12:31:19 -0800)
are available in the git repository at:
git://git.yoctoproject.org/poky-contrib akuster/jethro_qemu_sec
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=akuster/jethro_qemu_sec
Armin Kuster (2):
openssl: Security fix CVE-2015-3197
openssl: Security fix CVE-2016-0701
.../openssl/openssl/CVE-2015-3197.patch | 63 +++++++++ .../openssl/openssl/CVE-2016-0701_1.patch | 102 ++++++++++++++ .../openssl/openssl/CVE-2016-0701_2.patch | 156 +++++++++++++++++++++ .../recipes-connectivity/openssl/openssl_1.0.2d.bb | 3 + 4 files changed, 324 insertions(+) create mode 100644 meta/recipes-connectivity/openssl/openssl/CVE-2015-3197.patch create mode 100644 meta/recipes-connectivity/openssl/openssl/CVE-2016-0701_1.patch create mode 100644 meta/recipes-connectivity/openssl/openssl/CVE-2016-0701_2.patch
Signature · 1 line
2.3.5
PATCH 1/2 openssl: Security fix CVE-2015-3197
CVE-2015-3197 OpenSSL: SSLv2 doesn't block disabled ciphers
--- .../openssl/openssl/CVE-2015-3197.patch | 63 ++++++++++++++++++++++ .../recipes-connectivity/openssl/openssl_1.0.2d.bb | 1 + 2 files changed, 64 insertions(+) create mode 100644 meta/recipes-connectivity/openssl/openssl/CVE-2015-3197.patch
meta/recipes-connectivity/openssl/openssl/CVE-2015-3197.patch new file +63 -0
@@ -0,0 +1,63 @@ +From d81a1600588b726c2bdccda7efad3cc7a87d6245 Mon Sep 17 00:00:00 2001 +From: Viktor Dukhovni <[email protected]> +Date: Wed, 30 Dec 2015 22:44:51 -0500 +Subject: [PATCH] Better SSLv2 cipher-suite enforcement + +Based on patch by: Nimrod Aviram <[email protected]> + +CVE-2015-3197 + +Reviewed-by: Tim Hudson <[email protected]> +Reviewed-by: Richard Levitte <[email protected]> + +Upstream-Status: Backport +https://github.com/openssl/openssl/commit/d81a1600588b726c2bdccda7efad3cc7a87d6245 + +CVE: CVE-2015-3197 +Signed-off-by: Armin Kuster <[email protected]> + +--- + ssl/s2_srvr.c | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +Index: openssl-1.0.2d/ssl/s2_srvr.c +=================================================================== +--- openssl-1.0.2d.orig/ssl/s2_srvr.c ++++ openssl-1.0.2d/ssl/s2_srvr.c +@@ -402,7 +402,7 @@ static int get_client_master_key(SSL *s) + } + + cp = ssl2_get_cipher_by_char(p); +- if (cp == NULL) { ++ if (cp == NULL || sk_SSL_CIPHER_find(s->session->ciphers, cp) < 0) { + ssl2_return_error(s, SSL2_PE_NO_CIPHER); + SSLerr(SSL_F_GET_CLIENT_MASTER_KEY, SSL_R_NO_CIPHER_MATCH); + return (-1); +@@ -687,8 +687,12 @@ static int get_client_hello(SSL *s) + prio = cs; + allow = cl; + } ++ ++ /* Generate list of SSLv2 ciphers shared between client and server */ + for (z = 0; z < sk_SSL_CIPHER_num(prio); z++) { +- if (sk_SSL_CIPHER_find(allow, sk_SSL_CIPHER_value(prio, z)) < 0) { ++ const SSL_CIPHER *cp = sk_SSL_CIPHER_value(prio, z); ++ if ((cp->algorithm_ssl & SSL_SSLV2) == 0 || ++ sk_SSL_CIPHER_find(allow, cp) < 0) { + (void)sk_SSL_CIPHER_delete(prio, z); + z--; + } +@@ -697,6 +701,13 @@ static int get_client_hello(SSL *s) + sk_SSL_CIPHER_free(s->session->ciphers); + s->session->ciphers = prio; + } ++ ++ /* Make sure we have at least one cipher in common */ ++ if (sk_SSL_CIPHER_num(s->session->ciphers) == 0) { ++ ssl2_return_error(s, SSL2_PE_NO_CIPHER); ++ SSLerr(SSL_F_GET_CLIENT_HELLO, SSL_R_NO_CIPHER_MATCH); ++ return -1; ++ } + /* + * s->session->ciphers should now have a list of ciphers that are on + * both the client and server. This list is ordered by the order the
meta/recipes-connectivity/openssl/openssl_1.0.2d.bb +1 -0
@@ -41,6 +41,7 @@ SRC_URI += "file://configure-targets.patch \ file://CVE-2015-3194-1-Add-PSS-parameter-check.patch \ file://0001-Add-test-for-CVE-2015-3194.patch \ file://CVE-2015-3195-Fix-leak-with-ASN.1-combine.patch \ + file://CVE-2015-3197.patch \ " SRC_URI[md5sum] = "38dd619b2e77cbac69b99f52a053d25a"
Signature · 1 line
2.3.5
PATCH 2/2 openssl: Security fix CVE-2016-0701
In reply to Armin KusterCVE-2016-0701 OpenSSL: DH small subgroups
--- .../openssl/openssl/CVE-2016-0701_1.patch | 102 ++++++++++++++ .../openssl/openssl/CVE-2016-0701_2.patch | 156 +++++++++++++++++++++ .../recipes-connectivity/openssl/openssl_1.0.2d.bb | 2 + 3 files changed, 260 insertions(+) create mode 100644 meta/recipes-connectivity/openssl/openssl/CVE-2016-0701_1.patch create mode 100644 meta/recipes-connectivity/openssl/openssl/CVE-2016-0701_2.patch
meta/recipes-connectivity/openssl/openssl/CVE-2016-0701_1.patch new file +102 -0
@@ -0,0 +1,102 @@ +From 878e2c5b13010329c203f309ed0c8f2113f85648 Mon Sep 17 00:00:00 2001 +From: Matt Caswell <[email protected]> +Date: Mon, 18 Jan 2016 11:31:58 +0000 +Subject: [PATCH] Prevent small subgroup attacks on DH/DHE + +Historically OpenSSL only ever generated DH parameters based on "safe" +primes. More recently (in version 1.0.2) support was provided for +generating X9.42 style parameter files such as those required for RFC +5114 support. The primes used in such files may not be "safe". Where an +application is using DH configured with parameters based on primes that +are not "safe" then an attacker could use this fact to find a peer's +private DH exponent. This attack requires that the attacker complete +multiple handshakes in which the peer uses the same DH exponent. + +A simple mitigation is to ensure that y^q (mod p) == 1 + +CVE-2016-0701 (fix part 1 of 2) + +Issue reported by Antonio Sanso. + +Reviewed-by: Viktor Dukhovni <[email protected]> + +Upstream-Status: Backport + +https://github.com/openssl/openssl/commit/878e2c5b13010329c203f309ed0c8f2113f85648 + +CVE: CVE-2016-0701 +Signed-of-by: Armin Kuster <[email protected]> + +--- + crypto/dh/dh.h | 1 + + crypto/dh/dh_check.c | 35 +++++++++++++++++++++++++---------- + 2 files changed, 26 insertions(+), 10 deletions(-) + +diff --git a/crypto/dh/dh.h b/crypto/dh/dh.h +index b177673..5498a9d 100644 +--- a/crypto/dh/dh.h ++++ b/crypto/dh/dh.h +@@ -174,6 +174,7 @@ struct dh_st { + /* DH_check_pub_key error codes */ + # define DH_CHECK_PUBKEY_TOO_SMALL 0x01 + # define DH_CHECK_PUBKEY_TOO_LARGE 0x02 ++# define DH_CHECK_PUBKEY_INVALID 0x03 + + /* + * primes p where (p-1)/2 is prime too are called "safe"; we define this for +diff --git a/crypto/dh/dh_check.c b/crypto/dh/dh_check.c +index 347467c..5adedc0 100644 +--- a/crypto/dh/dh_check.c ++++ b/crypto/dh/dh_check.c +@@ -151,23 +151,38 @@ int DH_check(const DH *dh, int *ret) + int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *ret) + { + int ok = 0; +- BIGNUM *q = NULL; ++ BIGNUM *tmp = NULL; ++ BN_CTX *ctx = NULL; + + *ret = 0; +- q = BN_new(); +- if (q == NULL) ++ ctx = BN_CTX_new(); ++ if (ctx == NULL) + goto err; +- BN_set_word(q, 1); +- if (BN_cmp(pub_key, q) <= 0) ++ BN_CTX_start(ctx); ++ tmp = BN_CTX_get(ctx); ++ if (tmp == NULL) ++ goto err; ++ BN_set_word(tmp, 1); ++ if (BN_cmp(pub_key, tmp) <= 0) + *ret |= DH_CHECK_PUBKEY_TOO_SMALL; +- BN_copy(q, dh->p); +- BN_sub_word(q, 1); +- if (BN_cmp(pub_key, q) >= 0) ++ BN_copy(tmp, dh->p); ++ BN_sub_word(tmp, 1); ++ if (BN_cmp(pub_key, tmp) >= 0) + *ret |= DH_CHECK_PUBKEY_TOO_LARGE; + ++ if (dh->q != NULL) { ++ /* Check pub_key^q == 1 mod p */ ++ if (!BN_mod_exp(tmp, pub_key, dh->q, dh->p, ctx)) ++ goto err; ++ if (!BN_is_one(tmp)) ++ *ret |= DH_CHECK_PUBKEY_INVALID; ++ } ++ + ok = 1; + err: +- if (q != NULL) +- BN_free(q); ++ if (ctx != NULL) { ++ BN_CTX_end(ctx); ++ BN_CTX_free(ctx); ++ } + return (ok); + } +-- +2.3.5 +
meta/recipes-connectivity/openssl/openssl/CVE-2016-0701_2.patch new file +156 -0
156 lines not on this page · raw message
meta/recipes-connectivity/openssl/openssl_1.0.2d.bb +2 -0
@@ -42,6 +42,8 @@ SRC_URI += "file://configure-targets.patch \ file://0001-Add-test-for-CVE-2015-3194.patch \ file://CVE-2015-3195-Fix-leak-with-ASN.1-combine.patch \ file://CVE-2015-3197.patch \ + file://CVE-2016-0701_1.patch \ + file://CVE-2016-0701_2.patch \ " SRC_URI[md5sum] = "38dd619b2e77cbac69b99f52a053d25a"
Signature · 1 line
2.3.5