]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Fix S4U2Self KDC crash when anon is restricted 485/head
authorGreg Hudson <ghudson@mit.edu>
Tue, 19 Jul 2016 15:00:28 +0000 (11:00 -0400)
committerGreg Hudson <ghudson@mit.edu>
Tue, 19 Jul 2016 16:35:42 +0000 (12:35 -0400)
In validate_as_request(), when enforcing restrict_anonymous_to_tgt,
use client.princ instead of request->client; the latter is NULL when
validating S4U2Self requests.

CVE-2016-3120:

In MIT krb5 1.9 and later, an authenticated attacker can cause krb5kdc
to dereference a null pointer if the restrict_anonymous_to_tgt option
is set to true, by making an S4U2Self request.

  CVSSv2 Vector: AV:N/AC:H/Au:S/C:N/I:N/A:C/E:H/RL:OF/RC:C

ticket: 8458 (new)
target_version: 1.14-next
target_version: 1.13-next

src/kdc/kdc_util.c
src/tests/t_pkinit.py

index 776e130e556aa653b8d7e540014670e56b4af478..29f9dbbf07eb567d378c9c47ec5489357d54eba7 100644 (file)
@@ -739,7 +739,7 @@ validate_as_request(kdc_realm_t *kdc_active_realm,
         return(KDC_ERR_MUST_USE_USER2USER);
     }
 
-    if (check_anon(kdc_active_realm, request->client, request->server) != 0) {
+    if (check_anon(kdc_active_realm, client.princ, request->server) != 0) {
         *status = "ANONYMOUS NOT ALLOWED";
         return(KDC_ERR_POLICY);
     }
index b66c458dff4c08446c088f1b3850f5acf8b2201d..f0214b6529e45cc689eb8a76ad21080c3f55d2b2 100755 (executable)
@@ -93,6 +93,11 @@ out = realm.run([kvno, realm.host_princ], expected_code=1)
 if 'KDC policy rejects request' not in out:
     fail('Wrong error for restricted anonymous PKINIT')
 
+# Regression test for #8458: S4U2Self requests crash the KDC if
+# anonymous is restricted.
+realm.kinit(realm.host_princ, flags=['-k'])
+realm.run([kvno, '-U', 'user', realm.host_princ])
+
 # Go back to a normal KDC and disable anonymous PKINIT.
 realm.stop_kdc()
 realm.start_kdc()