39 lines
1.2 KiB
Diff
39 lines
1.2 KiB
Diff
From 3984ef0b72831da8b3ece4745cac4f8575b19098 Mon Sep 17 00:00:00 2001
|
|
From: Guido Vranken <guidovranken@gmail.com>
|
|
Date: Mon, 11 Jun 2018 19:38:54 +0200
|
|
Subject: [PATCH] Reject excessively large primes in DH key generation.
|
|
|
|
CVE-2018-0732
|
|
|
|
Signed-off-by: Guido Vranken <guidovranken@gmail.com>
|
|
|
|
(cherry picked from commit 91f7361f47b082ae61ffe1a7b17bb2adf213c7fe)
|
|
|
|
Reviewed-by: Tim Hudson <tjh@openssl.org>
|
|
Reviewed-by: Matt Caswell <matt@openssl.org>
|
|
(Merged from https://github.com/openssl/openssl/pull/6457)
|
|
---
|
|
crypto/dh/dh_key.c | 7 ++++++-
|
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/crypto/dh/dh_key.c b/crypto/dh/dh_key.c
|
|
index 387558f1467..f235e0d682b 100644
|
|
--- a/crypto/dh/dh_key.c
|
|
+++ b/crypto/dh/dh_key.c
|
|
@@ -130,10 +130,15 @@ static int generate_key(DH *dh)
|
|
int ok = 0;
|
|
int generate_new_key = 0;
|
|
unsigned l;
|
|
- BN_CTX *ctx;
|
|
+ BN_CTX *ctx = NULL;
|
|
BN_MONT_CTX *mont = NULL;
|
|
BIGNUM *pub_key = NULL, *priv_key = NULL;
|
|
|
|
+ if (BN_num_bits(dh->p) > OPENSSL_DH_MAX_MODULUS_BITS) {
|
|
+ DHerr(DH_F_GENERATE_KEY, DH_R_MODULUS_TOO_LARGE);
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
ctx = BN_CTX_new();
|
|
if (ctx == NULL)
|
|
goto err;
|