Module Name: src
Committed By: drochner
Date: Tue Dec 7 09:10:22 UTC 2010
Modified Files:
src/crypto/external/bsd/openssl/dist/ssl: s3_clnt.c s3_srvr.c
Log Message:
openssl security patch of the day:
Fix a flaw in the OpenSSL SSL/TLS server code where an old bug
workaround allows malicous clients to modify the stored session cache
ciphersuite. In some cases the ciphersuite can be downgraded to a weaker one
on subsequent connections. See
http://www.openssl.org/news/secadv_20101202.txt
(CVE-2010-4180)
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/crypto/external/bsd/openssl/dist/ssl/s3_clnt.c
cvs rdiff -u -r1.5 -r1.6 src/crypto/external/bsd/openssl/dist/ssl/s3_srvr.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/crypto/external/bsd/openssl/dist/ssl/s3_clnt.c
diff -u src/crypto/external/bsd/openssl/dist/ssl/s3_clnt.c:1.2 src/crypto/external/bsd/openssl/dist/ssl/s3_clnt.c:1.3
--- src/crypto/external/bsd/openssl/dist/ssl/s3_clnt.c:1.2 Tue Aug 10 11:01:00 2010
+++ src/crypto/external/bsd/openssl/dist/ssl/s3_clnt.c Tue Dec 7 09:10:21 2010
@@ -870,8 +870,11 @@
s->session->cipher_id = s->session->cipher->id;
if (s->hit && (s->session->cipher_id != c->id))
{
+/* Workaround is now obsolete */
+#if 0
if (!(s->options &
SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG))
+#endif
{
al=SSL_AD_ILLEGAL_PARAMETER;
SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED);
Index: src/crypto/external/bsd/openssl/dist/ssl/s3_srvr.c
diff -u src/crypto/external/bsd/openssl/dist/ssl/s3_srvr.c:1.5 src/crypto/external/bsd/openssl/dist/ssl/s3_srvr.c:1.6
--- src/crypto/external/bsd/openssl/dist/ssl/s3_srvr.c:1.5 Fri Apr 9 04:34:13 2010
+++ src/crypto/external/bsd/openssl/dist/ssl/s3_srvr.c Tue Dec 7 09:10:21 2010
@@ -975,6 +975,10 @@
break;
}
}
+/* Disabled because it can be used in a ciphersuite downgrade
+ * attack: CVE-2010-4180.
+ */
+#if 0
if (j == 0 && (s->options & SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG) && (sk_SSL_CIPHER_num(ciphers) == 1))
{
/* Special case as client bug workaround: the previously used cipher may
@@ -989,6 +993,7 @@
j = 1;
}
}
+#endif
if (j == 0)
{
/* we need to have the cipher in the cipher