]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Fix Null pointer deref in X509_issuer_and_serial_hash()
authorMatt Caswell <matt@openssl.org>
Wed, 10 Feb 2021 16:10:36 +0000 (16:10 +0000)
committerMatt Caswell <matt@openssl.org>
Tue, 16 Feb 2021 11:32:32 +0000 (11:32 +0000)
The OpenSSL public API function X509_issuer_and_serial_hash() attempts
to create a unique hash value based on the issuer and serial number data
contained within an X509 certificate. However it fails to correctly
handle any errors that may occur while parsing the issuer field (which
might occur if the issuer field is maliciously constructed). This may
subsequently result in a NULL pointer deref and a crash leading to a
potential denial of service attack.

The function X509_issuer_and_serial_hash() is never directly called by
OpenSSL itself so applications are only vulnerable if they use this
function directly and they use it on certificates that may have been
obtained from untrusted sources.

CVE-2021-23841

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
crypto/x509/x509_cmp.c

index 8e525a38152858851a73cd9b0615e4d4dd38b08e..a74311e92d4997626b8bebf78cab2320a21feaf9 100644 (file)
@@ -44,6 +44,8 @@ unsigned long X509_issuer_and_serial_hash(X509 *a)
     if (ctx == NULL)
         goto err;
     f = X509_NAME_oneline(a->cert_info.issuer, NULL, 0);
+    if (f == NULL)
+        goto err;
     if (!EVP_DigestInit_ex(ctx, EVP_md5(), NULL))
         goto err;
     if (!EVP_DigestUpdate(ctx, (unsigned char *)f, strlen(f)))