[OpenSSL Advisory] Klima-Pokorny-Rosa attack on PKCS #1 v1.5 padding

Bodo Moeller <[email protected]>
Newsgroups gmane.comp.encryption.openssl.announce
Organization OpenSSL Project
Message-ID <[email protected]>
OpenSSL Security Advisory [19 March 2003]

Klima-Pokorny-Rosa attack on RSA in SSL/TLS
===========================================

Czech cryptologists Vlastimil Klima, Ondrej Pokorny, and Tomas Rosa
have come up with an extension of the "Bleichenbacher attack" on RSA
with PKCS #1 v1.5 padding as used in SSL 3.0 and TLS 1.0.  Their
attack requires the attacker to open millions of SSL/TLS connections
to the server under attack; the server's behaviour when faced with
specially made-up RSA ciphertexts can reveal information that in
effect allows the attacker to perform a single RSA private key
operation on a ciphertext of its choice using the server's RSA key.
Note that the server's RSA key is not compromised in this attack.

This problem affects all applications using the OpenSSL SSL/TLS library.
OpenSSL releases up to 0.9.6i and 0.9.7a are vulnerable. The enclosed
patch modifies SSL/TLS server behaviour to avoid the vulnerability.


Security Patch
--------------

The following patch can be applied to OpenSSL releases 0.9.6b up to 0.9.6i,
0.9.7, and 0.9.7a.

--- s3_srvr.c	29 Nov 2002 11:31:51 -0000	1.85.2.14
+++ s3_srvr.c	19 Mar 2003 18:00:00 -0000
@@ -1447,7 +1447,7 @@
 		if (i != SSL_MAX_MASTER_KEY_LENGTH)
 			{
 			al=SSL_AD_DECODE_ERROR;
-			SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_BAD_RSA_DECRYPT);
+			/* SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_BAD_RSA_DECRYPT); */
 			}
 
 		if ((al == -1) && !((p[0] == (s->client_version>>8)) && (p[1] == (s->client_version & 0xff))))
@@ -1463,30 +1463,29 @@
 				(p[0] == (s->version>>8)) && (p[1] == (s->version & 0xff))))
 				{
 				al=SSL_AD_DECODE_ERROR;
-				SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_BAD_PROTOCOL_VERSION_NUMBER);
-				goto f_err;
+				/* SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_BAD_PROTOCOL_VERSION_NUMBER); */
+
+				/* The Klima-Pokorny-Rosa extension of Bleichenbacher's attack
+				 * (http://eprint.iacr.org/2003/052/) exploits the version
+				 * number check as a "bad version oracle" -- an alert would
+				 * reveal that the plaintext corresponding to some ciphertext
+				 * made up by the adversary is properly formatted except
+				 * that the version number is wrong.  To avoid such attacks,
+				 * we should treat this just like any other decryption error. */
+				p[0] = (char)(int) "CAN-2003-0131 patch 2003-03-19";
 				}
 			}
 
 		if (al != -1)
 			{
-#if 0
-			goto f_err;
-#else
 			/* Some decryption failure -- use random value instead as countermeasure
 			 * against Bleichenbacher's attack on PKCS #1 v1.5 RSA padding
-			 * (see RFC 2246, section 7.4.7.1).
-			 * But note that due to length and protocol version checking, the
-			 * attack is impractical anyway (see section 5 in D. Bleichenbacher:
-			 * "Chosen Ciphertext Attacks Against Protocols Based on the RSA
-			 * Encryption Standard PKCS #1", CRYPTO '98, LNCS 1462, pp. 1-12).
-			 */
+			 * (see RFC 2246, section 7.4.7.1). */
 			ERR_clear_error();
 			i = SSL_MAX_MASTER_KEY_LENGTH;
 			p[0] = s->client_version >> 8;
 			p[1] = s->client_version & 0xff;
 			RAND_pseudo_bytes(p+2, i-2); /* should be RAND_bytes, but we cannot work around a failure */
-#endif
 			}
 	
 		s->session->master_key_length=


References
----------

Report "Attacking RSA-based Sessions in SSL/TLS" by V. Klima, O. Pokorny,
and T. Rosa:
http://eprint.iacr.org/2003/052/

The Common Vulnerabilities and Exposures project (cve.mitre.org) has
assigned the name CAN-2003-0131 to this issue.
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2003-0131

URL for this Security Advisory:
http://www.openssl.org/news/secadv_20030319.txt
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Announcement Mailing List                 [email protected]
Automated List Manager                           [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.