]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
PKINIT null pointer deref [CVE-2013-1415]
authorXi Wang <xi.wang@gmail.com>
Thu, 14 Feb 2013 23:17:40 +0000 (18:17 -0500)
committerBen Kaduk <kaduk@mit.edu>
Fri, 15 Feb 2013 19:28:41 +0000 (14:28 -0500)
Don't dereference a null pointer when cleaning up.

The KDC plugin for PKINIT can dereference a null pointer when a
malformed packet causes processing to terminate early, leading to
a crash of the KDC process.  An attacker would need to have a valid
PKINIT certificate or have observed a successful PKINIT authentication,
or an unauthenticated attacker could execute the attack if anonymous
PKINIT is enabled.

CVSSv2 vector: AV:N/AC:M/Au:N/C:N/I:N/A:C/E:P/RL:O/RC:C

This is a minimal commit for pullup; style fixes in a followup.
[kaduk@mit.edu: reformat and edit commit message]

ticket: 7570 (new)
target_version: 1.11.1
tags: pullup

src/plugins/preauth/pkinit/pkinit_crypto_openssl.c

index 0360736d96057fb30acafdb58efa3a0df1108562..827280b7cfcdb778a6d2c922bfbddff11b8e39c9 100644 (file)
@@ -3253,7 +3253,7 @@ pkinit_check_kdc_pkid(krb5_context context,
     pkiDebug("found kdcPkId in AS REQ\n");
     is = d2i_PKCS7_ISSUER_AND_SERIAL(NULL, &p, (int)pkid_len);
     if (is == NULL)
-        goto cleanup;
+        return retval;
 
     status = X509_NAME_cmp(X509_get_issuer_name(kdc_cert), is->issuer);
     if (!status) {
@@ -3263,7 +3263,6 @@ pkinit_check_kdc_pkid(krb5_context context,
     }
 
     retval = 0;
-cleanup:
     X509_NAME_free(is->issuer);
     ASN1_INTEGER_free(is->serial);
     free(is);