Package: release.debian.org Severity: normal Tags: bullseye User: release.debian....@packages.debian.org Usertags: pu
[ Reason ] Fixing one no-DSA security advisory an an memory leak that was actually bothering a user enough to get tracked down. I've confirmed that package passes autopkgtest on bullseye. [ Impact ] Authenticated attackers can crash a KDC and if they do it fast enough it won't auto-restart. A memory leak will persist. [ Tests ] Upstream has introduced tests to confirm the fixes. The changes are very small and targeted. [ Risks ] Small changes easily reviewed. [ Checklist ] [x] *all* changes are documented in the d/changelog [x] I reviewed all changes and I approve them [x] attach debdiff against the package in (old)stable [ ] the issue is verified as fixed in unstable [ Changes ] diff --git a/debian/changelog b/debian/changelog index f4beefd80c..0be31136f4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +krb5 (1.18.3-6+deb11u1) bullseye; urgency=medium + + * Fix KDC null dereference crash on FAST request with no server field, + CVE-2021-37750, Closes: #992607 + * Fix memory leak in krb5_gss_inquire_cred, Closes: #991140 + + + -- Sam Hartman <hartm...@debian.org> Sun, 29 Aug 2021 16:38:12 -0600 + krb5 (1.18.3-6) unstable; urgency=high * Pull in upstream patch to fix CVE-2021-36222 (KDC NULL dereference), diff --git a/debian/patches/0011-Fix-KDC-null-deref-on-TGS-inner-body-null-server.patch b/debian/patches/0011-Fix-KDC-null-deref-on-TGS-inner-body-null-server.patch new file mode 100644 index 0000000000..970a80cc89 --- /dev/null +++ b/debian/patches/0011-Fix-KDC-null-deref-on-TGS-inner-body-null-server.patch @@ -0,0 +1,44 @@ +From: Greg Hudson <ghud...@mit.edu> +Date: Tue, 3 Aug 2021 01:15:27 -0400 +Subject: Fix KDC null deref on TGS inner body null server + +After the KDC decodes a FAST inner body, it does not check for a null +server. Prior to commit 39548a5b17bbda9eeb63625a201cfd19b9de1c5b this +would typically result in an error from krb5_unparse_name(), but with +the addition of get_local_tgt() it results in a null dereference. Add +a null check. + +Reported by Joseph Sutton of Catalyst. + +CVE-2021-37750: + +In MIT krb5 releases 1.14 and later, an authenticated attacker can +cause a null dereference in the KDC by sending a FAST TGS request with +no server field. + +ticket: 9008 (new) +tags: pullup +target_version: 1.19-next +target_version: 1.18-next + +(cherry picked from commit d775c95af7606a51bf79547a94fa52ddd1cb7f49) +--- + src/kdc/do_tgs_req.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/kdc/do_tgs_req.c b/src/kdc/do_tgs_req.c +index 241f34e..386ed5f 100644 +--- a/src/kdc/do_tgs_req.c ++++ b/src/kdc/do_tgs_req.c +@@ -208,6 +208,11 @@ process_tgs_req(krb5_kdc_req *request, krb5_data *pkt, + status = "FIND_FAST"; + goto cleanup; + } ++ if (sprinc == NULL) { ++ status = "NULL_SERVER"; ++ errcode = KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN; ++ goto cleanup; ++ } + + errcode = get_local_tgt(kdc_context, &sprinc->realm, header_server, + &local_tgt, &local_tgt_storage, &local_tgt_key); diff --git a/debian/patches/0012-Fix-defcred-leak-in-krb5-gss_inquire_cred.patch b/debian/patches/0012-Fix-defcred-leak-in-krb5-gss_inquire_cred.patch new file mode 100644 index 0000000000..3c81bf0666 --- /dev/null +++ b/debian/patches/0012-Fix-defcred-leak-in-krb5-gss_inquire_cred.patch @@ -0,0 +1,41 @@ +From: Greg Hudson <ghud...@mit.edu> +Date: Wed, 21 Jul 2021 13:44:30 -0400 +Subject: Fix defcred leak in krb5 gss_inquire_cred() +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +Commit 1cd2821c19b2b95e39d5fc2f451a035585a40fa5 altered the memory +management of krb5_gss_inquire_cred(), introducing defcred to act as +an owner pointer when the function must acquire a default credential. +The commit neglected to update the code to release the default cred +along the successful path. The old code does not trigger because +cred_handle is now reassigned, so the default credential is leaked. + +Reported by Pavel Březina. + +(a minimal alternative to commit 593e16448e1af23eef74689afe06a7bcc86e79c7) + +ticket: 9016 +version_fixed: 1.18.4 + +(cherry picked from commit b92be484630b38e26f5ee4bd67973fbd7627009c) +--- + src/lib/gssapi/krb5/inq_cred.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/src/lib/gssapi/krb5/inq_cred.c b/src/lib/gssapi/krb5/inq_cred.c +index a8f2541..cd8384d 100644 +--- a/src/lib/gssapi/krb5/inq_cred.c ++++ b/src/lib/gssapi/krb5/inq_cred.c +@@ -197,9 +197,7 @@ krb5_gss_inquire_cred(minor_status, cred_handle, name, lifetime_ret, + mechs = GSS_C_NO_OID_SET; + } + +- if (cred_handle == GSS_C_NO_CREDENTIAL) +- krb5_gss_release_cred(minor_status, (gss_cred_id_t *)&cred); +- ++ krb5_gss_release_cred(minor_status, &defcred); + krb5_free_context(context); + *minor_status = 0; + return((lifetime == 0)?GSS_S_CREDENTIALS_EXPIRED:GSS_S_COMPLETE); diff --git a/debian/patches/series b/debian/patches/series index 0478b278b0..23f41f56da 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -8,3 +8,5 @@ debian-local/0007-Fix-pkg-config-library-include-paths.patch debian-local/0008-Use-isystem-for-include-paths.patch 0009-Add-.gitignore.patch 0010-Fix-KDC-null-deref-on-bad-encrypted-challenge.patch +0011-Fix-KDC-null-deref-on-TGS-inner-body-null-server.patch +0012-Fix-defcred-leak-in-krb5-gss_inquire_cred.patch