netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PACTH nf-next] netfilter: nf_reject_ipv4: don't send tcp RST if the packet is non-TCP
@ 2016-06-20 13:26 Liping Zhang
  2016-06-20 15:48 ` Marcelo Ricardo Leitner
  2016-06-23 17:33 ` Pablo Neira Ayuso
  0 siblings, 2 replies; 6+ messages in thread
From: Liping Zhang @ 2016-06-20 13:26 UTC (permalink / raw)
  To: pablo; +Cc: netfilter-devel, Liping Zhang

From: Liping Zhang <liping.zhang@spreadtrum.com>

In iptables, if the user add a rule to send tcp RST and specify the
non-TCP protocol, such as UDP, kernel will reject this request. But
in nftables, this validity check only occurs in nft tool, i.e. only
in userspace.

This means that user can add such a rule like follows via nfnetlink:
  "nft add rule filter forward ip protocol udp reject with tcp reset"

This will generate some confusing tcp RST packets. So we should send
tcp RST only when it is TCP packet.

Signed-off-by: Liping Zhang <liping.zhang@spreadtrum.com>
---
 net/ipv4/netfilter/nf_reject_ipv4.c |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/net/ipv4/netfilter/nf_reject_ipv4.c b/net/ipv4/netfilter/nf_reject_ipv4.c
index b6ea57e..fd82202 100644
--- a/net/ipv4/netfilter/nf_reject_ipv4.c
+++ b/net/ipv4/netfilter/nf_reject_ipv4.c
@@ -24,6 +24,9 @@ const struct tcphdr *nf_reject_ip_tcphdr_get(struct sk_buff *oldskb,
 	if (ip_hdr(oldskb)->frag_off & htons(IP_OFFSET))
 		return NULL;
 
+	if (ip_hdr(oldskb)->protocol != IPPROTO_TCP)
+		return NULL;
+
 	oth = skb_header_pointer(oldskb, ip_hdrlen(oldskb),
 				 sizeof(struct tcphdr), _oth);
 	if (oth == NULL)
-- 
1.7.9.5



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-06-23 17:33 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-06-20 13:26 [PACTH nf-next] netfilter: nf_reject_ipv4: don't send tcp RST if the packet is non-TCP Liping Zhang
2016-06-20 15:48 ` Marcelo Ricardo Leitner
2016-06-21  1:35   ` Liping Zhang
2016-06-21 19:03     ` Marcelo Ricardo Leitner
2016-06-23 11:53       ` Pablo Neira Ayuso
2016-06-23 17:33 ` Pablo Neira Ayuso

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).