summaryrefslogtreecommitdiffstats
path: root/net/netfilter
diff options
context:
space:
mode:
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>2012-08-31 09:55:54 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-11-26 11:34:46 -0800
commitd87b26d50da9eca1be14216c9f7dac5b9b0ae3f9 (patch)
treece1874000463346a0a3d5b6d4fe509b8443385c4 /net/netfilter
parent02f7a0df82b15ceee37e2e24caa5dd68a2585682 (diff)
downloadlinux-stable-d87b26d50da9eca1be14216c9f7dac5b9b0ae3f9.tar.gz
linux-stable-d87b26d50da9eca1be14216c9f7dac5b9b0ae3f9.tar.bz2
linux-stable-d87b26d50da9eca1be14216c9f7dac5b9b0ae3f9.zip
netfilter: Validate the sequence number of dataless ACK packets as well
commit 4a70bbfaef0361d27272629d1a250a937edcafe4 upstream. We spare nothing by not validating the sequence number of dataless ACK packets and enabling it makes harder off-path attacks. See: "Reflection scan: an Off-Path Attack on TCP" by Jan Wrobel, http://arxiv.org/abs/1201.2074 Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/netfilter')
-rw-r--r--net/netfilter/nf_conntrack_proto_tcp.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c
index 37bf94394be0..7609b8c82f6e 100644
--- a/net/netfilter/nf_conntrack_proto_tcp.c
+++ b/net/netfilter/nf_conntrack_proto_tcp.c
@@ -628,15 +628,9 @@ static bool tcp_in_window(const struct nf_conn *ct,
ack = sack = receiver->td_end;
}
- if (seq == end
- && (!tcph->rst
- || (seq == 0 && state->state == TCP_CONNTRACK_SYN_SENT)))
+ if (tcph->rst && seq == 0 && state->state == TCP_CONNTRACK_SYN_SENT)
/*
- * Packets contains no data: we assume it is valid
- * and check the ack value only.
- * However RST segments are always validated by their
- * SEQ number, except when seq == 0 (reset sent answering
- * SYN.
+ * RST sent answering SYN.
*/
seq = end = sender->td_end;