]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
tls: avoid tls.invalid_handshake_message FP
authorVictor Julien <vjulien@oisf.net>
Mon, 22 Aug 2022 08:49:34 +0000 (10:49 +0200)
committerVictor Julien <vjulien@oisf.net>
Fri, 13 Jan 2023 11:33:02 +0000 (12:33 +0100)
Don't set TLS_DECODER_EVENT_INVALID_HANDSHAKE_MESSAGE event on encrypted
handshake messages.

(cherry picked from commit cf4c201acbf6e9558e450a8dc76d12b48bf49b8d)

src/app-layer-ssl.c

index 113dd34fae2995d198014b6066b4951816463322..2a61c87544c0d42c44db9437ca9ddf48ac34e80d 100644 (file)
@@ -1623,7 +1623,13 @@ static int SSLv3ParseHandshakeProtocol(SSLState *ssl_state, const uint8_t *input
             input_len -= avail_record_len;
 
             SSLParserHSReset(ssl_state->curr_connp);
-            SSLSetEvent(ssl_state, TLS_DECODER_EVENT_INVALID_HANDSHAKE_MESSAGE);
+
+            if ((direction && (ssl_state->flags & SSL_AL_FLAG_SERVER_CHANGE_CIPHER_SPEC)) ||
+                    (!direction && (ssl_state->flags & SSL_AL_FLAG_CLIENT_CHANGE_CIPHER_SPEC))) {
+                // after Change Cipher Spec we get Encrypted Handshake Messages
+            } else {
+                SSLSetEvent(ssl_state, TLS_DECODER_EVENT_INVALID_HANDSHAKE_MESSAGE);
+            }
             continue;
         }