[PATCH] 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)
committerSascha Steinbiss <satta@debian.org>
Mon, 19 Jul 2021 11:26:22 +0000 (12:26 +0100)
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.

Gbp-Pq: Name stream-no-reject-bad-ack.patch

src/stream-tcp.c

index 59c3da97ff46aa3c80ee94a00fb494a31c9fb669..75282e095f9ac8716c29a3053970ed802f7f0915 100644 (file)
@@ -4789,7 +4789,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