]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: detect malicious patterns in tcp_collapse_ofo_queue()
authorEric Dumazet <edumazet@google.com>
Mon, 23 Jul 2018 16:28:19 +0000 (09:28 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 23 Jul 2018 19:01:36 +0000 (12:01 -0700)
commitbcf21ed466c077e27022fe5edbe709bfddd5ecba
treef133ddfef1cad281067830449ce844e03cf15ba0
parentebf63c919c5dd87e3334d32a2c124c05a33a8c67
tcp: detect malicious patterns in tcp_collapse_ofo_queue()

In case an attacker feeds tiny packets completely out of order,
tcp_collapse_ofo_queue() might scan the whole rb-tree, performing
expensive copies, but not changing socket memory usage at all.

1) Do not attempt to collapse tiny skbs.
2) Add logic to exit early when too many tiny skbs are detected.

We prefer not doing aggressive collapsing (which copies packets)
for pathological flows, and revert to tcp_prune_ofo_queue() which
will be less expensive.

In the future, we might add the possibility of terminating flows
that are proven to be malicious.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_input.c