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

From: Bodo Moeller (bodoat_private)
Date: Wed Mar 19 2003 - 11:36:19 PST

  • Next message: Andrzej Szombierski: "linux kmod/ptrace bug - details"

    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
    



    This archive was generated by hypermail 2b30 : Wed Mar 19 2003 - 14:09:57 PST