Skip to content

Commit

Permalink
Verify decoded kadmin C strings [CVE-2015-8629]
Browse files Browse the repository at this point in the history
In xdr_nullstring(), check that the decoded string is terminated with
a zero byte and does not contain any internal zero bytes.

CVE-2015-8629:

In all versions of MIT krb5, an authenticated attacker can cause
kadmind to read beyond the end of allocated memory by sending a string
without a terminating zero byte.  Information leakage may be possible
for an attacker with permission to modify the database.

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

(cherry picked from commit df17a12)

ticket: 8341
version_fixed: 1.13.4
tags: -pullup
status: resolved
  • Loading branch information
greghudson authored and tlyu committed Feb 8, 2016
1 parent f513d67 commit 6e84bed
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion src/lib/kadm5/kadm_rpc_xdr.c
Expand Up @@ -64,7 +64,14 @@ bool_t xdr_nullstring(XDR *xdrs, char **objp)
return FALSE;
}
}
return (xdr_opaque(xdrs, *objp, size));
if (!xdr_opaque(xdrs, *objp, size))
return FALSE;
/* Check that the unmarshalled bytes are a C string. */
if ((*objp)[size - 1] != '\0')
return FALSE;
if (memchr(*objp, '\0', size - 1) != NULL)
return FALSE;
return TRUE;

case XDR_ENCODE:
if (size != 0)
Expand Down

0 comments on commit 6e84bed

Please sign in to comment.