A vulnerability has been found in all previously released versions of OpenSSL (all versions up to 0.9.7h and 0.9.8a). Versions 0.9.7h and 0.9.8a have been released to address the issue. The vulnerability potentially affects applications that use the SSL/TLS server implementation provided by OpenSSL.
Applications that use the option SSL_OP_MSIE_SSLV2_RSA_PADDING are affected by the OpenSSL Roolback vulnerability. This option is implied by use of SSL_OP_ALL, which is intended to work around various bugs in third-party software that might prevent interoperability. The SSL_OP_MSIE_SSLV2_RSA_PADDING option disables a verification step in the SSL 2.0 server supposed to prevent active protocol-version rollback attacks. With this verification step disabled, an attacker acting as a "man in the middle" can force a client and a server to negotiate the SSL 2.0 protocol even if these parties both support SSL 3.0 or TLS 1.0. The SSL 2.0 protocol is known to have severe cryptographic weaknesses and is supported as a fallback only.
Applications using neither SSL_OP_MSIE_SSLV2_RSA_PADDING nor SSL_OP_ALL are not affected. Also, applications that disable
use of SSL 2.0 are not affected.
There are multiple ways to avoid this vulnerability. Any one of the following measures is sufficient.
1. Disable SSL 2.0 in the OpenSSL-based application.
The vulnerability occurs only if the old protocol version SSL 2.0 is enabled both in an OpenSSL server and in any of the clients (OpenSSL-based or not) connecting to it. Thus, if you have disabled SSL 2.0, the vulnerability does not apply to you. Generally, it is strongly recommended to disable the SSL 2.0 protocol because of its known weaknesses.
2. Upgrade the OpenSSL server software.
The vulnerability is resolved in the following versions of OpenSSL:
- in the 0.9.7 branch, version 0.9.7h (or later);
- in the 0.9.8 branch, version 0.9.8a (or later).
OpenSSL 0.9.8a and OpenSSL 0.9.7h are available for download via HTTP and FTP from the following master locations (you can find the various FTP mirrors under http://www.openssl.org/source/mirror.html):
The checksums were calculated using the following commands:
openssl md5 openssl-0.9*.tar.gz
openssl sha1 openssl-0.9*.tar.gz
If this version upgrade is not an option at the present time, alternatively the following patch may be applied to the OpenSSL source code to resolve the problem. The patch is compatible with the 0.9.6, 0.9.7, and 0.9.8 branches of OpenSSL.: http://www.openssl.org/news/patch-CAN-2005-2969.txt
Whether you choose to upgrade to a new version or to apply the patch, make sure to recompile any applications statically linked to OpenSSL libraries if these applications use the OpenSSL SSL/TLS server implementation.
The OpenSSL team thank Yutaka Oiwa of the Research Center for Information Security, National Institute of Advanced Industrial Science and Technology (AIST), Japan, for alerting us about this problem.