From 1c411f836063e4e6d67390d205e043149302fdd9 Mon Sep 17 00:00:00 2001 From: Greg Hudson Date: Tue, 30 Nov 2010 21:20:49 +0000 Subject: SA-2010-007 Checksum vulnerabilities (CVE-2010-1324 and others) Fix multiple checksum handling bugs, as described in: CVE-2010-1324 CVE-2010-1323 CVE-2010-4020 CVE-2010-4021 * Return the correct (keyed) checksums as the mandatory checksum type for DES enctypes. * Restrict simplified-profile checksums to their corresponding etypes. * Add internal checks to reduce the risk of stream ciphers being used with simplified-profile key derivation or other algorithms relying on the block encryption primitive. * Use the mandatory checksum type for the PKINIT KDC signature, instead of the first-listed keyed checksum. * Use the mandatory checksum type when sending KRB-SAFE messages by default, instead of the first-listed keyed checksum. * Use the mandatory checksum type for the t_kperf test program. * Use the mandatory checksum type (without additional logic) for the FAST request checksum. * Preserve the existing checksum choices (unkeyed checksums for DES enctypes) for the authenticator checksum, using explicit logic. * Ensure that SAM checksums received from the KDC are keyed. * Ensure that PAC checksums are keyed. ticket: 6827 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@24538 dc483132-0cff-0310-8789-dd5450dbe970 --- src/lib/crypto/crypto_tests/t_kperf.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'src/lib/crypto/crypto_tests') diff --git a/src/lib/crypto/crypto_tests/t_kperf.c b/src/lib/crypto/crypto_tests/t_kperf.c index 8c36e902f..a07a364dd 100644 --- a/src/lib/crypto/crypto_tests/t_kperf.c +++ b/src/lib/crypto/crypto_tests/t_kperf.c @@ -49,9 +49,8 @@ main(int argc, char **argv) krb5_keyblock kblock; krb5_key key; krb5_enctype enctype; - krb5_cksumtype cktype, *cktypelist; + krb5_cksumtype cktype; int blocksize, num_blocks, intf, op, i; - unsigned int count; size_t outlen, cklen; krb5_data block; krb5_enc_data outblock; @@ -69,11 +68,6 @@ main(int argc, char **argv) blocksize = atoi(argv[3]); num_blocks = atoi(argv[4]); - /* Pick the first available keyed checksum type. */ - krb5_c_keyed_checksum_types(NULL, enctype, &count, &cktypelist); - assert(count > 0); - cktype = cktypelist[0]; - block.data = "notrandom"; block.length = 9; krb5_c_random_seed(NULL, &block); @@ -89,6 +83,7 @@ main(int argc, char **argv) outblock.ciphertext.length = outlen; outblock.ciphertext.data = calloc(1, outlen); + krb5int_c_mandatory_cksumtype(NULL, enctype, &cktype); krb5_c_checksum_length(NULL, cktype, &cklen); sum.checksum_type = cktype; sum.length = cklen; -- cgit