Send bad_record_mac instead of decryption_failed
authorMatt Caswell <matt@openssl.org>
Fri, 4 Oct 2019 13:01:21 +0000 (14:01 +0100)
committerMatt Caswell <matt@openssl.org>
Mon, 7 Oct 2019 07:25:42 +0000 (08:25 +0100)
The decryption failed alert was deprecated a long time ago. It can
provide an attacker too much information to be able to distinguish between
MAC failures and decryption failures and can lead to oracle attacks.
Instead we should always use the bad_record_mac alert for these issues.
This fixes one instance that still exists. It does not represent a
security issue in this case because it is only ever sent if the record is
publicly invalid, i.e. we have detected it is invalid without using any
secret material.

Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/10093)

(cherry picked from commit 37133290832ac2d1389926eba7325125fdacbe8d)

ssl/record/ssl3_record.c

index d116ff0e90854bef7450f89493d35332db0ceca4..d406adfb9300bfa573ce6cf0758f726af185e82c 100644 (file)
@@ -559,7 +559,7 @@ int ssl3_get_record(SSL *s)
             RECORD_LAYER_reset_read_sequence(&s->rlayer);
             return 1;
         }
-        SSLfatal(s, SSL_AD_DECRYPTION_FAILED, SSL_F_SSL3_GET_RECORD,
+        SSLfatal(s, SSL_AD_BAD_RECORD_MAC, SSL_F_SSL3_GET_RECORD,
                  SSL_R_BLOCK_CIPHER_PAD_IS_WRONG);
         return -1;
     }