]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
stream/tcp: don't reject on bad ack
authorEric Leblond <el@stamus-networks.com>
Fri, 28 May 2021 10:19:38 +0000 (12:19 +0200)
committerVictor Julien <victor@inliniac.net>
Mon, 21 Jun 2021 19:54:36 +0000 (21:54 +0200)
Not using a packet for the streaming analysis when a non zero
ACK value and ACK bit was unset was leading to evasion as it was
possible to start a session with a SYN packet with a non zero ACK
value to see the full TCP stream to escape all stream and application
layer detection.

This addresses CVE-2021-35063.

Fixes: fa692df37 ("stream: reject broken ACK packets")
Ticket: #4504.

src/stream-tcp.c

index 377abdfb6b78d94addcf40a0b1c272ebe2254465..898bde925f6999e968f094729f8e3732a184382e 100644 (file)
@@ -4831,7 +4831,6 @@ int StreamTcpPacket (ThreadVars *tv, Packet *p, StreamTcpThread *stt,
     /* broken TCP http://ask.wireshark.org/questions/3183/acknowledgment-number-broken-tcp-the-acknowledge-field-is-nonzero-while-the-ack-flag-is-not-set */
     if (!(p->tcph->th_flags & TH_ACK) && TCP_GET_ACK(p) != 0) {
         StreamTcpSetEvent(p, STREAM_PKT_BROKEN_ACK);
-        goto error;
     }
 
     /* If we are on IPS mode, and got a drop action triggered from