Skip to content

Commit

Permalink
Merge pull request #476 from dongbeiouba/fix84/CVE-2023-3817
Browse files Browse the repository at this point in the history
  • Loading branch information
InfoHunter authored Aug 17, 2023
2 parents c604174 + fa43b49 commit 4d52cb3
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 4 deletions.
6 changes: 4 additions & 2 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@

Changes between 8.4.0-pre1 and 8.4.0-pre2 [xx XXX xxxx]

*) 修复CVE-2023-3446
*) 修复CVE-2023-3817

*) 修复CVE-2023-2975
*) 修复CVE-2023-3446

*) 修复CVE-2023-2975

*) 实现基于64位平台架构的SM2算法性能优化

Expand Down
9 changes: 8 additions & 1 deletion crypto/dh/dh_check.c
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ int DH_check(const DH *dh, int *ret)
#ifdef FIPS_MODULE
return DH_check_params(dh, ret);
#else
int ok = 0, r;
int ok = 0, r, q_good = 0;
BN_CTX *ctx = NULL;
BIGNUM *t1 = NULL, *t2 = NULL;
int nid = DH_get_nid((DH *)dh);
Expand Down Expand Up @@ -171,6 +171,13 @@ int DH_check(const DH *dh, int *ret)
goto err;

if (dh->params.q != NULL) {
if (BN_ucmp(dh->params.p, dh->params.q) > 0)
q_good = 1;
else
*ret |= DH_CHECK_INVALID_Q_VALUE;
}

if (q_good) {
if (BN_cmp(dh->params.g, BN_value_one()) <= 0)
*ret |= DH_NOT_SUITABLE_GENERATOR;
else if (BN_cmp(dh->params.g, dh->params.p) >= 0)
Expand Down
14 changes: 13 additions & 1 deletion test/dhtest.c
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,15 @@ static int dh_test(void)
/* We'll have a stale error on the queue from the above test so clear it */
ERR_clear_error();

if (!TEST_ptr(BN_copy(q, p)) || !TEST_true(BN_add(q, q, BN_value_one())))
goto err3;

if (!TEST_true(DH_check(dh, &i)))
goto err3;
if (!TEST_true(i & DH_CHECK_INVALID_Q_VALUE)
|| !TEST_false(i & DH_CHECK_Q_NOT_PRIME))
goto err3;

/* Modulus of size: dh check max modulus bits + 1 */
if (!TEST_true(BN_set_word(p, 1))
|| !TEST_true(BN_lshift(p, p, OPENSSL_DH_CHECK_MAX_MODULUS_BITS)))
Expand All @@ -135,6 +144,9 @@ static int dh_test(void)
if (!TEST_false(DH_check(dh, &i)))
goto err3;

/* We'll have a stale error on the queue from the above test so clear it */
ERR_clear_error();

/*
* II) key generation
*/
Expand Down Expand Up @@ -588,7 +600,7 @@ static int rfc5114_test(void)

if (!TEST_ptr(priv_key = BN_bin2bn(td->xB, td->xB_len, NULL))
|| !TEST_ptr(pub_key = BN_bin2bn(td->yB, td->yB_len, NULL))
|| !TEST_true( DH_set0_key(dhB, pub_key, priv_key)))
|| !TEST_true(DH_set0_key(dhB, pub_key, priv_key)))
goto bad_err;
priv_key = pub_key = NULL;

Expand Down

0 comments on commit 4d52cb3

Please sign in to comment.