Version in base suite: 1.20.1-2 Base version: krb5_1.20.1-2 Target version: krb5_1.20.1-2+deb12u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/k/krb5/krb5_1.20.1-2.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/k/krb5/krb5_1.20.1-2+deb12u1.dsc changelog | 8 + patches/series | 1 patches/upstream/0010-Ensure-array-count-consistency-in-kadm5-RPC.patch | 63 ++++++++++ 3 files changed, 72 insertions(+) diff -Nru krb5-1.20.1/debian/changelog krb5-1.20.1/debian/changelog --- krb5-1.20.1/debian/changelog 2023-05-15 23:44:41.000000000 +0000 +++ krb5-1.20.1/debian/changelog 2023-08-14 20:06:53.000000000 +0000 @@ -1,3 +1,11 @@ +krb5 (1.20.1-2+deb12u1) bookworm; urgency=high + + * Fixes CVE-2023-36054: a remote authenticated attacker can cause + kadmind to free an uninitialized pointer. Upstream believes remote + code execusion is unlikely, Closes: #1043431 + + -- Sam Hartman Mon, 14 Aug 2023 14:06:53 -0600 + krb5 (1.20.1-2) unstable; urgency=medium * Tighten dependencies on libkrb5support0. This means that the entire diff -Nru krb5-1.20.1/debian/patches/series krb5-1.20.1/debian/patches/series --- krb5-1.20.1/debian/patches/series 2022-11-18 15:02:10.000000000 +0000 +++ krb5-1.20.1/debian/patches/series 2023-08-14 20:06:53.000000000 +0000 @@ -7,3 +7,4 @@ debian-local/0007-Fix-pkg-config-library-include-paths.patch debian-local/0008-Use-isystem-for-include-paths.patch 0009-Add-.gitignore.patch +upstream/0010-Ensure-array-count-consistency-in-kadm5-RPC.patch diff -Nru krb5-1.20.1/debian/patches/upstream/0010-Ensure-array-count-consistency-in-kadm5-RPC.patch krb5-1.20.1/debian/patches/upstream/0010-Ensure-array-count-consistency-in-kadm5-RPC.patch --- krb5-1.20.1/debian/patches/upstream/0010-Ensure-array-count-consistency-in-kadm5-RPC.patch 1970-01-01 00:00:00.000000000 +0000 +++ krb5-1.20.1/debian/patches/upstream/0010-Ensure-array-count-consistency-in-kadm5-RPC.patch 2023-08-14 20:06:53.000000000 +0000 @@ -0,0 +1,63 @@ +From: Greg Hudson +Date: Wed, 21 Jun 2023 10:57:39 -0400 +Subject: Ensure array count consistency in kadm5 RPC + +In _xdr_kadm5_principal_ent_rec(), ensure that n_key_data matches the +key_data array count when decoding. Otherwise when the structure is +later freed, xdr_array() could iterate over the wrong number of +elements, either leaking some memory or freeing uninitialized +pointers. Reported by Robert Morris. + +CVE-2023-36054: + +An authenticated attacker can cause a kadmind process to crash by +freeing uninitialized pointers. Remote code execution is unlikely. +An attacker with control of a kadmin server can cause a kadmin client +to crash by freeing uninitialized pointers. + +ticket: 9099 (new) +tags: pullup +target_version: 1.21-next +target_version: 1.20-next + +(cherry picked from commit ef08b09c9459551aabbe7924fb176f1583053cdd) +--- + src/lib/kadm5/kadm_rpc_xdr.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/src/lib/kadm5/kadm_rpc_xdr.c b/src/lib/kadm5/kadm_rpc_xdr.c +index 0411c3f..287cae7 100644 +--- a/src/lib/kadm5/kadm_rpc_xdr.c ++++ b/src/lib/kadm5/kadm_rpc_xdr.c +@@ -390,6 +390,7 @@ _xdr_kadm5_principal_ent_rec(XDR *xdrs, kadm5_principal_ent_rec *objp, + int v) + { + unsigned int n; ++ bool_t r; + + if (!xdr_krb5_principal(xdrs, &objp->principal)) { + return (FALSE); +@@ -443,6 +444,9 @@ _xdr_kadm5_principal_ent_rec(XDR *xdrs, kadm5_principal_ent_rec *objp, + if (!xdr_krb5_int16(xdrs, &objp->n_key_data)) { + return (FALSE); + } ++ if (xdrs->x_op == XDR_DECODE && objp->n_key_data < 0) { ++ return (FALSE); ++ } + if (!xdr_krb5_int16(xdrs, &objp->n_tl_data)) { + return (FALSE); + } +@@ -451,9 +455,10 @@ _xdr_kadm5_principal_ent_rec(XDR *xdrs, kadm5_principal_ent_rec *objp, + return FALSE; + } + n = objp->n_key_data; +- if (!xdr_array(xdrs, (caddr_t *) &objp->key_data, +- &n, ~0, sizeof(krb5_key_data), +- xdr_krb5_key_data_nocontents)) { ++ r = xdr_array(xdrs, (caddr_t *) &objp->key_data, &n, objp->n_key_data, ++ sizeof(krb5_key_data), xdr_krb5_key_data_nocontents); ++ objp->n_key_data = n; ++ if (!r) { + return (FALSE); + } +