[31624] in CVS-changelog-for-Kerberos-V5
krb5 commit: Check for keyed checksums in CAMMAC verifiers
daemon@ATHENA.MIT.EDU (ghudson@mit.edu)
Mon Nov 9 11:56:54 2026
From: ghudson@mit.edu
To: cvs-krb5@mit.edu
Message-Id: <20261109165649.0C009105814@krbdev.mit.edu>
Date: Mon, 9 Nov 2026 11:56:49 -0500 (EST)
MIME-Version: 1.0
Reply-To: krbdev@mit.edu
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: cvs-krb5-bounces@mit.edu
https://github.com/krb5/krb5/commit/18142c9c3a3c2e16d8469aff342b02a28f0b468c
commit 18142c9c3a3c2e16d8469aff342b02a28f0b468c
Author: Greg Hudson <ghudson@mit.edu>
Date: Sun Aug 2 21:39:23 2026 -0400
Check for keyed checksums in CAMMAC verifiers
In libkrb5's check_svcver() and in the KDC's cammac_check_kdcver(),
return an error if the verifier uses an unkeyed checksum.
CVE-2026-71199:
In MIT krb5 release 1.14 and later (since authentication indicator
support was added), an authenticated attacker can bypass
authentication indicator requirements using an unkeyed checksum in the
CAMMAC authdata container. Discovered by Claude and Ada Logics, and
by Alejandro Pacheco.
ticket: 9228 (new)
tags: pullup
target_version: 1.22-next
src/kdc/cammac.c | 2 +-
src/lib/krb5/krb/cammac_util.c | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/kdc/cammac.c b/src/kdc/cammac.c
index df5fe966f..c0d5b6f66 100644
--- a/src/kdc/cammac.c
+++ b/src/kdc/cammac.c
@@ -144,7 +144,7 @@ cammac_check_kdcver(krb5_context context, krb5_cammac *cammac,
memset(&tgtkey, 0, sizeof(tgtkey));
- if (ver == NULL)
+ if (ver == NULL || !krb5_c_is_keyed_cksum(ver->checksum.checksum_type))
goto cleanup;
/* Fetch the krbtgt key indicated by the KDC verifier. Only allow the
diff --git a/src/lib/krb5/krb/cammac_util.c b/src/lib/krb5/krb/cammac_util.c
index ab9da05a7..32748e4ae 100644
--- a/src/lib/krb5/krb/cammac_util.c
+++ b/src/lib/krb5/krb/cammac_util.c
@@ -44,6 +44,8 @@ check_svcver(krb5_context context, const krb5_cammac *cammac,
if (ver == NULL)
return EINVAL;
+ if (!krb5_c_is_keyed_cksum(ver->checksum.checksum_type))
+ return KRB5KRB_AP_ERR_BAD_INTEGRITY;
ret = encode_krb5_authdata(cammac->elements, &der_authdata);
if (ret)
_______________________________________________
cvs-krb5 mailing list
cvs-krb5@mit.edu
https://mailman.mit.edu/mailman/listinfo/cvs-krb5