svn commit: r216063 - in releng: 7.1 7.1/crypto/openssl/ssl
7.1/sys/conf 7.3 7.3/crypto/openssl/ssl 7.3/sys/conf 8.0
8.0/crypto/openssl/ssl 8.0/sys/conf 8.1
8.1/crypto/openssl/ssl 8.1/sys/conf
Simon L. Nielsen
simon at FreeBSD.org
Mon Nov 29 20:43:07 UTC 2010
Author: simon
Date: Mon Nov 29 20:43:06 2010
New Revision: 216063
URL: http://svn.freebsd.org/changeset/base/216063
Log:
Fix a race condition exists in the OpenSSL TLS server extension code and
a double free in the SSL client ECDH handling code.
Approved by: so (simon)
Security: CVE-2010-2939, CVE-2010-3864
Security: FreeBSD-SA-10:10.openssl
Modified:
releng/7.1/UPDATING
releng/7.1/crypto/openssl/ssl/s3_clnt.c
releng/7.1/sys/conf/newvers.sh
releng/7.3/UPDATING
releng/7.3/crypto/openssl/ssl/s3_clnt.c
releng/7.3/sys/conf/newvers.sh
releng/8.0/UPDATING
releng/8.0/crypto/openssl/ssl/s3_clnt.c
releng/8.0/crypto/openssl/ssl/t1_lib.c
releng/8.0/sys/conf/newvers.sh
releng/8.1/UPDATING
releng/8.1/crypto/openssl/ssl/s3_clnt.c
releng/8.1/crypto/openssl/ssl/t1_lib.c
releng/8.1/sys/conf/newvers.sh
Modified: releng/7.1/UPDATING
==============================================================================
--- releng/7.1/UPDATING Mon Nov 29 18:33:20 2010 (r216062)
+++ releng/7.1/UPDATING Mon Nov 29 20:43:06 2010 (r216063)
@@ -8,6 +8,9 @@ Items affecting the ports and packages s
/usr/ports/UPDATING. Please read that file before running
portupgrade.
+20101129: p16 FreeBSD-SA-10:10.openssl
+ Fix OpenSSL multiple vulnerabilities.
+
20101110: p15 FreeBSD-SA-10:09.pseudofs
Don't unlock a mutex which wasn't locked.
Modified: releng/7.1/crypto/openssl/ssl/s3_clnt.c
==============================================================================
--- releng/7.1/crypto/openssl/ssl/s3_clnt.c Mon Nov 29 18:33:20 2010 (r216062)
+++ releng/7.1/crypto/openssl/ssl/s3_clnt.c Mon Nov 29 20:43:06 2010 (r216063)
@@ -1289,6 +1289,7 @@ int ssl3_get_key_exchange(SSL *s)
s->session->sess_cert->peer_ecdh_tmp=ecdh;
ecdh=NULL;
BN_CTX_free(bn_ctx);
+ bn_ctx = NULL;
EC_POINT_free(srvr_ecpoint);
srvr_ecpoint = NULL;
}
Modified: releng/7.1/sys/conf/newvers.sh
==============================================================================
--- releng/7.1/sys/conf/newvers.sh Mon Nov 29 18:33:20 2010 (r216062)
+++ releng/7.1/sys/conf/newvers.sh Mon Nov 29 20:43:06 2010 (r216063)
@@ -32,7 +32,7 @@
TYPE="FreeBSD"
REVISION="7.1"
-BRANCH="RELEASE-p15"
+BRANCH="RELEASE-p16"
if [ "X${BRANCH_OVERRIDE}" != "X" ]; then
BRANCH=${BRANCH_OVERRIDE}
fi
Modified: releng/7.3/UPDATING
==============================================================================
--- releng/7.3/UPDATING Mon Nov 29 18:33:20 2010 (r216062)
+++ releng/7.3/UPDATING Mon Nov 29 20:43:06 2010 (r216063)
@@ -8,6 +8,9 @@ Items affecting the ports and packages s
/usr/ports/UPDATING. Please read that file before running
portupgrade.
+20101129: p4 FreeBSD-SA-10:10.openssl
+ Fix OpenSSL multiple vulnerabilities.
+
20100920: p3 FreeBSD-SA-10:08.bzip2
Fix an integer overflow in RLE length parsing when decompressing
corrupt bzip2 data.
Modified: releng/7.3/crypto/openssl/ssl/s3_clnt.c
==============================================================================
--- releng/7.3/crypto/openssl/ssl/s3_clnt.c Mon Nov 29 18:33:20 2010 (r216062)
+++ releng/7.3/crypto/openssl/ssl/s3_clnt.c Mon Nov 29 20:43:06 2010 (r216063)
@@ -1289,6 +1289,7 @@ int ssl3_get_key_exchange(SSL *s)
s->session->sess_cert->peer_ecdh_tmp=ecdh;
ecdh=NULL;
BN_CTX_free(bn_ctx);
+ bn_ctx = NULL;
EC_POINT_free(srvr_ecpoint);
srvr_ecpoint = NULL;
}
Modified: releng/7.3/sys/conf/newvers.sh
==============================================================================
--- releng/7.3/sys/conf/newvers.sh Mon Nov 29 18:33:20 2010 (r216062)
+++ releng/7.3/sys/conf/newvers.sh Mon Nov 29 20:43:06 2010 (r216063)
@@ -32,7 +32,7 @@
TYPE="FreeBSD"
REVISION="7.3"
-BRANCH="RELEASE-p3"
+BRANCH="RELEASE-p4"
if [ "X${BRANCH_OVERRIDE}" != "X" ]; then
BRANCH=${BRANCH_OVERRIDE}
fi
Modified: releng/8.0/UPDATING
==============================================================================
--- releng/8.0/UPDATING Mon Nov 29 18:33:20 2010 (r216062)
+++ releng/8.0/UPDATING Mon Nov 29 20:43:06 2010 (r216063)
@@ -15,6 +15,9 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.
debugging tools present in HEAD were left in place because
sun4v support still needs work to become production ready.
+20101129: p6 FreeBSD-SA-10:10.openssl
+ Fix OpenSSL multiple vulnerabilities.
+
20100920: p5 FreeBSD-SA-10:08.bzip2
Fix an integer overflow in RLE length parsing when decompressing
corrupt bzip2 data.
Modified: releng/8.0/crypto/openssl/ssl/s3_clnt.c
==============================================================================
--- releng/8.0/crypto/openssl/ssl/s3_clnt.c Mon Nov 29 18:33:20 2010 (r216062)
+++ releng/8.0/crypto/openssl/ssl/s3_clnt.c Mon Nov 29 20:43:06 2010 (r216063)
@@ -1378,6 +1378,7 @@ int ssl3_get_key_exchange(SSL *s)
s->session->sess_cert->peer_ecdh_tmp=ecdh;
ecdh=NULL;
BN_CTX_free(bn_ctx);
+ bn_ctx = NULL;
EC_POINT_free(srvr_ecpoint);
srvr_ecpoint = NULL;
}
Modified: releng/8.0/crypto/openssl/ssl/t1_lib.c
==============================================================================
--- releng/8.0/crypto/openssl/ssl/t1_lib.c Mon Nov 29 18:33:20 2010 (r216062)
+++ releng/8.0/crypto/openssl/ssl/t1_lib.c Mon Nov 29 20:43:06 2010 (r216063)
@@ -369,14 +369,23 @@ int ssl_parse_clienthello_tlsext(SSL *s,
switch (servname_type)
{
case TLSEXT_NAMETYPE_host_name:
- if (s->session->tlsext_hostname == NULL)
+ if (!s->hit)
{
- if (len > TLSEXT_MAXLEN_host_name ||
- ((s->session->tlsext_hostname = OPENSSL_malloc(len+1)) == NULL))
+ if(s->session->tlsext_hostname)
+ {
+ *al = SSL_AD_DECODE_ERROR;
+ return 0;
+ }
+ if (len > TLSEXT_MAXLEN_host_name)
{
*al = TLS1_AD_UNRECOGNIZED_NAME;
return 0;
}
+ if ((s->session->tlsext_hostname = OPENSSL_malloc(len+1)) == NULL)
+ {
+ *al = TLS1_AD_INTERNAL_ERROR;
+ return 0;
+ }
memcpy(s->session->tlsext_hostname, sdata, len);
s->session->tlsext_hostname[len]='\0';
if (strlen(s->session->tlsext_hostname) != len) {
@@ -389,7 +398,8 @@ int ssl_parse_clienthello_tlsext(SSL *s,
}
else
- s->servername_done = strlen(s->session->tlsext_hostname) == len
+ s->servername_done = s->session->tlsext_hostname
+ && strlen(s->session->tlsext_hostname) == len
&& strncmp(s->session->tlsext_hostname, (char *)sdata, len) == 0;
break;
Modified: releng/8.0/sys/conf/newvers.sh
==============================================================================
--- releng/8.0/sys/conf/newvers.sh Mon Nov 29 18:33:20 2010 (r216062)
+++ releng/8.0/sys/conf/newvers.sh Mon Nov 29 20:43:06 2010 (r216063)
@@ -32,7 +32,7 @@
TYPE="FreeBSD"
REVISION="8.0"
-BRANCH="RELEASE-p5"
+BRANCH="RELEASE-p6"
if [ "X${BRANCH_OVERRIDE}" != "X" ]; then
BRANCH=${BRANCH_OVERRIDE}
fi
Modified: releng/8.1/UPDATING
==============================================================================
--- releng/8.1/UPDATING Mon Nov 29 18:33:20 2010 (r216062)
+++ releng/8.1/UPDATING Mon Nov 29 20:43:06 2010 (r216063)
@@ -15,6 +15,9 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.
debugging tools present in HEAD were left in place because
sun4v support still needs work to become production ready.
+20101129: p2 FreeBSD-SA-10:10.openssl
+ Fix OpenSSL multiple vulnerabilities.
+
20100920: p1 FreeBSD-SA-10:08.bzip2
Fix an integer overflow in RLE length parsing when decompressing
corrupt bzip2 data.
Modified: releng/8.1/crypto/openssl/ssl/s3_clnt.c
==============================================================================
--- releng/8.1/crypto/openssl/ssl/s3_clnt.c Mon Nov 29 18:33:20 2010 (r216062)
+++ releng/8.1/crypto/openssl/ssl/s3_clnt.c Mon Nov 29 20:43:06 2010 (r216063)
@@ -1377,6 +1377,7 @@ int ssl3_get_key_exchange(SSL *s)
s->session->sess_cert->peer_ecdh_tmp=ecdh;
ecdh=NULL;
BN_CTX_free(bn_ctx);
+ bn_ctx = NULL;
EC_POINT_free(srvr_ecpoint);
srvr_ecpoint = NULL;
}
Modified: releng/8.1/crypto/openssl/ssl/t1_lib.c
==============================================================================
--- releng/8.1/crypto/openssl/ssl/t1_lib.c Mon Nov 29 18:33:20 2010 (r216062)
+++ releng/8.1/crypto/openssl/ssl/t1_lib.c Mon Nov 29 20:43:06 2010 (r216063)
@@ -432,14 +432,23 @@ int ssl_parse_clienthello_tlsext(SSL *s,
switch (servname_type)
{
case TLSEXT_NAMETYPE_host_name:
- if (s->session->tlsext_hostname == NULL)
+ if (!s->hit)
{
- if (len > TLSEXT_MAXLEN_host_name ||
- ((s->session->tlsext_hostname = OPENSSL_malloc(len+1)) == NULL))
+ if(s->session->tlsext_hostname)
+ {
+ *al = SSL_AD_DECODE_ERROR;
+ return 0;
+ }
+ if (len > TLSEXT_MAXLEN_host_name)
{
*al = TLS1_AD_UNRECOGNIZED_NAME;
return 0;
}
+ if ((s->session->tlsext_hostname = OPENSSL_malloc(len+1)) == NULL)
+ {
+ *al = TLS1_AD_INTERNAL_ERROR;
+ return 0;
+ }
memcpy(s->session->tlsext_hostname, sdata, len);
s->session->tlsext_hostname[len]='\0';
if (strlen(s->session->tlsext_hostname) != len) {
@@ -452,7 +461,8 @@ int ssl_parse_clienthello_tlsext(SSL *s,
}
else
- s->servername_done = strlen(s->session->tlsext_hostname) == len
+ s->servername_done = s->session->tlsext_hostname
+ && strlen(s->session->tlsext_hostname) == len
&& strncmp(s->session->tlsext_hostname, (char *)sdata, len) == 0;
break;
Modified: releng/8.1/sys/conf/newvers.sh
==============================================================================
--- releng/8.1/sys/conf/newvers.sh Mon Nov 29 18:33:20 2010 (r216062)
+++ releng/8.1/sys/conf/newvers.sh Mon Nov 29 20:43:06 2010 (r216063)
@@ -32,7 +32,7 @@
TYPE="FreeBSD"
REVISION="8.1"
-BRANCH="RELEASE-p1"
+BRANCH="RELEASE-p2"
if [ "X${BRANCH_OVERRIDE}" != "X" ]; then
BRANCH=${BRANCH_OVERRIDE}
fi
More information about the svn-src-all
mailing list