[3006] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

krb5-kdc/664: checksum vulnerability in SAM preauth

daemon@ATHENA.MIT.EDU (fcusack@iconnet.net)
Wed Nov 25 15:57:10 1998

Resent-From: gnats@rt-11.MIT.EDU (GNATS Management)
Resent-To: krb5-unassigned@RT-11.MIT.EDU
Resent-Reply-To: krb5-bugs@MIT.EDU, fcusack@iconnet.net
Date: Wed, 25 Nov 1998 15:56:34 -0500 (EST)
From: fcusack@iconnet.net
Reply-To: fcusack@iconnet.net
To: krb5-bugs@MIT.EDU
Cc: fcusack@iconnet.net


>Number:         664
>Category:       krb5-kdc
>Synopsis:       checksum vulnerability in SAM preauth
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    krb5-unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   unknown
>Arrival-Date:   Wed Nov 25 15:57:01 EST 1998
>Last-Modified:
>Originator:     Frank Cusack
>Organization:
Icon CMT Corp.
>Release:        krb5-current-19981119
>Environment:
N/A
System: SunOS ratbert 5.6 Generic_105181-09 sun4u sparc SUNW,Ultra-5_10
Architecture: sun4

>Description:
	a) sam-checksums are probably going away, and just the
	krb-error checksum field will be used. (?)
	b) checksum should not be calculated when the range of
	the sad is small.
	c) the checksum code didn't work under the new crypo API
	anyway.

	I just ifdef'd it out.
>How-To-Repeat:
>Fix:
Index: kdc/preauth/pa_sam_cryptocard.c
===================================================================
RCS file: /icon/d04/cvsroot/3rd-party/krb5-19981119/kdc/preauth/pa_sam_cryptocard.c,v
retrieving revision 1.3
diff -u -r1.3 pa_sam_cryptocard.c
--- pa_sam_cryptocard.c	1998/11/25 06:13:10	1.3
+++ pa_sam_cryptocard.c	1998/11/25 20:50:59
@@ -301,7 +301,8 @@
     sc.sam_pk_for_sad.length = 0;
     sc.sam_nonce = 0;
 
-    /* Generate checksum */
+#if 0
+    /* We don't calculate a checksum since it could be used to crack the SAD */
     sc.sam_cksum.length = krb5_checksum_size(context, CKSUMTYPE_RSA_MD5_DES);
     if ((sc.sam_cksum.contents = malloc(sc.sam_cksum.length)) == NULL) {
 	retval = ENOMEM;
@@ -316,6 +317,7 @@
 					 &sc.sam_cksum)) {
 	goto cleanup;
     }
+#endif /* 0 */
       
     if (retval = encode_krb5_sam_challenge(&sc, &scratch))
 	 goto cleanup;
Index: kdc/preauth/pa_sam_digi_path.c
===================================================================
RCS file: /icon/d04/cvsroot/3rd-party/krb5-19981119/kdc/preauth/pa_sam_digi_path.c,v
retrieving revision 1.3
diff -u -r1.3 pa_sam_digi_path.c
--- pa_sam_digi_path.c	1998/11/25 06:13:10	1.3
+++ pa_sam_digi_path.c	1998/11/25 20:50:59
@@ -205,7 +205,8 @@
     sc.sam_pk_for_sad.length = 0;
     sc.sam_nonce = 0;
 
-    /* Generate checksum */
+#if 0
+    /* We don't calculate a checksum since it could be used to crack the SAD */
     sc.sam_cksum.length = krb5_checksum_size(context, CKSUMTYPE_RSA_MD5_DES);
     if ((sc.sam_cksum.contents = malloc(sc.sam_cksum.length)) == NULL) {
 	retval = ENOMEM;
@@ -220,6 +221,7 @@
 					 &sc.sam_cksum)) {
 	goto cleanup;
     }
+#endif /* 0 */
       
     if (retval = encode_krb5_sam_challenge(&sc, &scratch))
 	 goto cleanup;
Index: kdc/preauth/pa_sam_grail.c
===================================================================
RCS file: /icon/d04/cvsroot/3rd-party/krb5-19981119/kdc/preauth/pa_sam_grail.c,v
retrieving revision 1.1
diff -u -r1.1 pa_sam_grail.c
--- pa_sam_grail.c	1998/11/25 04:06:18	1.1
+++ pa_sam_grail.c	1998/11/25 20:50:59
@@ -105,7 +105,8 @@
     sc.sam_pk_for_sad.length = 0;
     sc.sam_nonce = 0;
 
-    /* Generate checksum */
+#if 0
+    /* We don't calculate a checksum since it could be used to crack the SAD */
     sc.sam_cksum.length = krb5_checksum_size(context, CKSUMTYPE_RSA_MD5_DES);
     if ((sc.sam_cksum.contents = malloc(sc.sam_cksum.length)) == NULL) {
 	retval = ENOMEM;
@@ -120,6 +121,7 @@
 					 &sc.sam_cksum)) {
 	goto cleanup;
     }
+#endif /* 0 */
       
     if (retval = encode_krb5_sam_challenge(&sc, &scratch))
 	goto cleanup;
Index: kdc/preauth/pa_sam_securid.c
===================================================================
RCS file: /icon/d04/cvsroot/3rd-party/krb5-19981119/kdc/preauth/pa_sam_securid.c,v
retrieving revision 1.2
diff -u -r1.2 pa_sam_securid.c
--- pa_sam_securid.c	1998/11/25 18:34:20	1.2
+++ pa_sam_securid.c	1998/11/25 20:51:00
@@ -201,7 +201,8 @@
     sc.sam_pk_for_sad.length = 0;
     sc.sam_nonce = 0;
 
-    /* Generate checksum */
+#if 0
+    /* We don't calculate a checksum since it could be used to crack the SAD */
     sc.sam_cksum.length = krb5_checksum_size(context, CKSUMTYPE_RSA_MD5_DES);
     if ((sc.sam_cksum.contents = malloc(sc.sam_cksum.length)) == NULL) {
 	return ENOMEM;
@@ -215,6 +216,7 @@
 					 &sc.sam_cksum)) {
 	goto cleanup;
     }
+#endif /* 0 */
       
     if (retval = encode_krb5_sam_challenge(&sc, &scratch))
 	goto cleanup;
>Audit-Trail:
>Unformatted:

home help back first fref pref prev next nref lref last post