-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 ============================================================================= FreeBSD-SA-05:21.openssl Security Advisory The FreeBSD Project Topic: Potential SSL 2.0 rollback Category: contrib Module: openssl Announced: 2005-10-11 Credits: Yutaka Oiwa Affects: All FreeBSD releases. Corrected: 2005-10-11 11:52:46 UTC (RELENG_6, 6.0-STABLE) 2005-10-11 11:53:03 UTC (RELENG_6_0, 6.0-RELEASE) 2005-10-11 11:52:01 UTC (RELENG_5, 5.4-STABLE) 2005-10-11 11:52:28 UTC (RELENG_5_4, 5.4-RELEASE-p8) 2005-10-11 11:52:13 UTC (RELENG_5_3, 5.3-RELEASE-p23) 2005-10-11 11:50:50 UTC (RELENG_4, 4.11-STABLE) 2005-10-11 11:51:45 UTC (RELENG_4_11, 4.11-RELEASE-p13) 2005-10-11 11:51:20 UTC (RELENG_4_10, 4.10-RELEASE-p19) CVE Name: CAN-2005-2969 For general information regarding FreeBSD Security Advisories, including descriptions of the fields above, security branches, and the following sections, please visit . I. Background The OpenSSL library implements the Secure Sockets Layer and Transport Layer Security protocols, as well as providing a large number of basic cryptographic functions. The Secure Sockets Layer protocol exists in two versions and includes a mechanism for negotiating the protocol version to be used. If the protocol is executed correctly, it is impossible for a client and server both capable of the newer version of the protocol (SSLv3) to end up using the older version of the protocol (SSLv2). II. Problem Description In order to provide bug-for-bug compatibility with Microsoft Internet Explorer 3.02, a verification step required by the Secure Sockets Layer protocol can be disabled by using the SSL_OP_MSIE_SSLV2_RSA_PADDING option in OpenSSL. This option is implied by the frequently-used SSL_OP_ALL option. III. Impact If the SSL_OP_MSIE_SSLV2_RSA_PADDING option is enabled in a server application using OpenSSL, an attacker who is able to intercept and tamper with packets transmitted between a client and the server can cause the protocol version negotiation to result in SSLv2 being used even when both the client and the server support SSLv3. Due to a number of weaknesses in the SSLv2 protocol, this may allow the attacker to read or tamper with the encrypted data being sent. Applications which do not support SSLv2, have been configured to not permit the use of SSLv2, or do not use the SSL_OP_MSIE_SSLV2_RSA_PADDING or SSL_OP_ALL options are not affected. IV. Workaround No workaround is available. V. Solution NOTE WELL: The solution described below causes OpenSSL to ignore the SSL_OP_MSIE_SSLV2_RSA_PADDING option and hence to require conformance with the Secure Sockets Layer protocol. As a result, this solution will reintroduce incompatibility with Microsoft Internet Explorer 3.02 and any other applications which exhibit the same protocol violation. Perform one of the following: 1) Upgrade your vulnerable system to 4-STABLE or 5-STABLE, or to the RELENG_5_4, RELENG_5_3, RELENG_4_11, or RELENG_4_10 security branch dated after the correction date. 2) To patch your present system: The following patches have been verified to apply to FreeBSD 4.10, 4.11, 5.3, and 5.4 systems. a) Download the relevant patch from the location below, and verify the detached PGP signature using your PGP utility. # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-05:21/openssl.patch # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-05:21/openssl.patch.asc b) Execute the following commands as root: # cd /usr/src # patch < /path/to/patch c) Recompile the operating system as described in . Note that any statically linked applications that are not part of the base system (i.e. from the Ports Collection or other 3rd-party sources) must be recompiled. All affected applications must be restarted for them to use the corrected library. Though not required, rebooting may be the easiest way to accomplish this. VI. Correction details The following list contains the revision numbers of each file that was corrected in FreeBSD. Branch Revision Path - ------------------------------------------------------------------------- RELENG_4 src/crypto/openssl/crypto/opensslv.h 1.1.1.1.2.11 src/crypto/openssl/ssl/s23_srvr.c 1.2.2.6 RELENG_4_11 src/UPDATING 1.73.2.91.2.14 src/sys/conf/newvers.sh 1.44.2.39.2.17 src/crypto/openssl/crypto/opensslv.h 1.1.1.1.2.10.4.1 src/crypto/openssl/ssl/s23_srvr.c 1.2.2.5.8.1 RELENG_4_10 src/UPDATING 1.73.2.90.2.20 src/sys/conf/newvers.sh 1.44.2.34.2.21 src/crypto/openssl/crypto/opensslv.h 1.1.1.1.2.10.2.1 src/crypto/openssl/ssl/s23_srvr.c 1.2.2.5.6.1 RELENG_5 src/crypto/openssl/crypto/opensslv.h 1.1.1.1.15.2.2 src/crypto/openssl/ssl/s23_srvr.c 1.7.6.1 RELENG_5_4 src/UPDATING 1.342.2.24.2.17 src/sys/conf/newvers.sh 1.62.2.18.2.13 src/crypto/openssl/crypto/opensslv.h 1.1.1.15.2.1.2.1 src/crypto/openssl/ssl/s23_srvr.c 1.7.10.1 RELENG_5_3 src/UPDATING 1.342.2.13.2.26 src/sys/conf/newvers.sh 1.62.2.15.2.28 src/crypto/openssl/crypto/opensslv.h 1.1.1.15.4.1 src/crypto/openssl/ssl/s23_srvr.c 1.7.8.1 RELENG_6 src/crypto/openssl/ssl/s23_srvr.c 1.7.12.1 src/crypto/openssl/crypto/opensslv.h 1.1.1.16.2.1 RELENG_6_0 src/UPDATING 1.416.2.3.2.1 src/crypto/openssl/crypto/opensslv.h 1.1.1.16.4.1 src/crypto/openssl/ssl/s23_srvr.c 1.7.14.1 - ------------------------------------------------------------------------- VII. References http://www.openssl.org/news/secadv_20051011.txt http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-2969 The latest revision of this advisory is available at ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-05:21.openssl.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (FreeBSD) iD8DBQFDThqmFdaIBMps37IRAuh+AJ4wt03pXt8g+9okQLaChhwrLgT+DQCfaBwg NQ1AyadfK+gC7adAcuLBQ2k= =a1sE -----END PGP SIGNATURE-----