Hi Adam, everyone, On Saturday 24 September 2011 16:27:17 Adam D. Barratt wrote: > On Sat, 2011-09-24 at 13:31 -0500, Raphael Geissert wrote: > > After two power failures and lots of connectivity issues, I think lenny13 > > should be on your hands now. Attached is the debdiff just for the sake of > > completeness. > > Yep, and flagged for acceptance at the next dinstall; thanks.
Thank you. Sorry for the trouble of releasing a DSA and then an SPU. Attached is the debdiff for squeeze3. The packages should be on your queue already. Cheers, -- Raphael Geissert - Debian Developer www.debian.org - get.debian.net
diff -Nru openssl-0.9.8o/debian/changelog openssl-0.9.8o/debian/changelog --- openssl-0.9.8o/debian/changelog 2011-09-12 19:49:24.000000000 -0500 +++ openssl-0.9.8o/debian/changelog 2011-09-24 18:57:29.000000000 -0500 @@ -1,3 +1,10 @@ +openssl (0.9.8o-4squeeze3) squeeze; urgency=low + + * Non-maintainer upload by the Security Team. + * Fix CVE-2011-3210: SSL memory handling for (EC)DH ciphersuites + + -- Raphael Geissert <[email protected]> Sat, 24 Sep 2011 18:57:14 -0500 + openssl (0.9.8o-4squeeze2) squeeze-security; urgency=high * Non-maintainer upload by the Security Team. diff -Nru openssl-0.9.8o/debian/patches/CVE-2011-3210.patch openssl-0.9.8o/debian/patches/CVE-2011-3210.patch --- openssl-0.9.8o/debian/patches/CVE-2011-3210.patch 1969-12-31 18:00:00.000000000 -0600 +++ openssl-0.9.8o/debian/patches/CVE-2011-3210.patch 2011-09-13 14:18:51.000000000 -0500 @@ -0,0 +1,98 @@ +Description: Fix SSL memory handling for (EC)DH ciphersuites, in + particular for multi-threaded use of ECDH. +Origin: http://cvs.openssl.org/chngview?cn=21334 + +Index: openssl-0.9.8o/ssl/s3_lib.c +=================================================================== +--- openssl-0.9.8o.orig/ssl/s3_lib.c ++++ openssl-0.9.8o/ssl/s3_lib.c +@@ -1722,11 +1722,17 @@ void ssl3_clear(SSL *s) + } + #ifndef OPENSSL_NO_DH + if (s->s3->tmp.dh != NULL) ++ { + DH_free(s->s3->tmp.dh); ++ s->s3->tmp.dh = NULL; ++ } + #endif + #ifndef OPENSSL_NO_ECDH + if (s->s3->tmp.ecdh != NULL) ++ { + EC_KEY_free(s->s3->tmp.ecdh); ++ s->s3->tmp.ecdh = NULL; ++ } + #endif + + rp = s->s3->rbuf.buf; +Index: openssl-0.9.8o/ssl/s3_srvr.c +=================================================================== +--- openssl-0.9.8o.orig/ssl/s3_srvr.c ++++ openssl-0.9.8o/ssl/s3_srvr.c +@@ -710,9 +710,7 @@ int ssl3_check_client_hello(SSL *s) + if (s->s3->tmp.message_type == SSL3_MT_CLIENT_HELLO) + { + /* Throw away what we have done so far in the current handshake, +- * which will now be aborted. (A full SSL_clear would be too much.) +- * I hope that tmp.dh is the only thing that may need to be cleared +- * when a handshake is not completed ... */ ++ * which will now be aborted. (A full SSL_clear would be too much.) */ + #ifndef OPENSSL_NO_DH + if (s->s3->tmp.dh != NULL) + { +@@ -720,6 +718,13 @@ int ssl3_check_client_hello(SSL *s) + s->s3->tmp.dh = NULL; + } + #endif ++#ifndef OPENSSL_NO_ECDH ++ if (s->s3->tmp.ecdh != NULL) ++ { ++ EC_KEY_free(s->s3->tmp.ecdh); ++ s->s3->tmp.ecdh = NULL; ++ } ++#endif + return 2; + } + return 1; +@@ -1329,7 +1334,6 @@ int ssl3_send_server_key_exchange(SSL *s + + if (s->s3->tmp.dh != NULL) + { +- DH_free(dh); + SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE, ERR_R_INTERNAL_ERROR); + goto err; + } +@@ -1390,7 +1394,6 @@ int ssl3_send_server_key_exchange(SSL *s + + if (s->s3->tmp.ecdh != NULL) + { +- EC_KEY_free(s->s3->tmp.ecdh); + SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE, ERR_R_INTERNAL_ERROR); + goto err; + } +@@ -1401,12 +1404,11 @@ int ssl3_send_server_key_exchange(SSL *s + SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,ERR_R_ECDH_LIB); + goto err; + } +- if (!EC_KEY_up_ref(ecdhp)) ++ if ((ecdh = EC_KEY_dup(ecdhp)) == NULL) + { + SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,ERR_R_ECDH_LIB); + goto err; + } +- ecdh = ecdhp; + + s->s3->tmp.ecdh=ecdh; + if ((EC_KEY_get0_public_key(ecdh) == NULL) || +@@ -2262,6 +2264,12 @@ int ssl3_get_client_key_exchange(SSL *s) + /* Get encoded point length */ + i = *p; + p += 1; ++ if (n != 1 + i) ++ { ++ SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, ++ ERR_R_EC_LIB); ++ goto err; ++ } + if (EC_POINT_oct2point(group, + clnt_ecpoint, p, i, bn_ctx) == 0) + { diff -Nru openssl-0.9.8o/debian/patches/series openssl-0.9.8o/debian/patches/series --- openssl-0.9.8o/debian/patches/series 2011-09-12 18:37:42.000000000 -0500 +++ openssl-0.9.8o/debian/patches/series 2011-09-24 18:55:22.000000000 -0500 @@ -24,3 +24,4 @@ CVE-2011-0014.patch block_diginotar.patch CVE-2011-1945.patch +CVE-2011-3210.patch

