From: Matt Caswell Date: Tue, 10 Mar 2015 16:38:32 +0000 (+0000) Subject: Fix DHE Null CKE vulnerability X-Git-Tag: OpenSSL_1_0_2a~12 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=b19d8143212ae5fbc9cebfd51c01f802fabccd33;p=oweals%2Fopenssl.git Fix DHE Null CKE vulnerability If client auth is used then a server can seg fault in the event of a DHE cipher being used and a zero length ClientKeyExchange message being sent by the client. This could be exploited in a DoS attack. CVE-2015-1787 Reviewed-by: Richard Levitte --- diff --git a/ssl/s3_srvr.c b/ssl/s3_srvr.c index 9e6ab0136a..c016139b1d 100644 --- a/ssl/s3_srvr.c +++ b/ssl/s3_srvr.c @@ -2251,10 +2251,17 @@ int ssl3_get_client_key_exchange(SSL *s) if (alg_k & (SSL_kEDH | SSL_kDHr | SSL_kDHd)) { int idx = -1; EVP_PKEY *skey = NULL; - if (n) + if (n > 1) { n2s(p, i); - else + } else { + if (alg_k & SSL_kDHE) { + al = SSL_AD_HANDSHAKE_FAILURE; + SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, + SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG); + goto f_err; + } i = 0; + } if (n && n != i + 2) { if (!(s->options & SSL_OP_SSLEAY_080_CLIENT_DH_BUG)) { SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,