summaryrefslogtreecommitdiffstats
path: root/net/netfilter
diff options
context:
space:
mode:
authorDavid Leadbeater <dgl@dgl.cx>2022-08-26 14:56:58 +1000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-09-15 11:30:04 +0200
commit451c9ce1e2fc9b9e40303bef8e5a0dca1a923cc4 (patch)
treec6a7b878f709ee80d2192f8357a5d94135023a88 /net/netfilter
parent1ce55ec5cb7c573c983dffbe290b8d17caf1f157 (diff)
downloadlinux-stable-451c9ce1e2fc9b9e40303bef8e5a0dca1a923cc4.tar.gz
linux-stable-451c9ce1e2fc9b9e40303bef8e5a0dca1a923cc4.tar.bz2
linux-stable-451c9ce1e2fc9b9e40303bef8e5a0dca1a923cc4.zip
netfilter: nf_conntrack_irc: Fix forged IP logic
[ Upstream commit 0efe125cfb99e6773a7434f3463f7c2fa28f3a43 ] Ensure the match happens in the right direction, previously the destination used was the server, not the NAT host, as the comment shows the code intended. Additionally nf_nat_irc uses port 0 as a signal and there's no valid way it can appear in a DCC message, so consider port 0 also forged. Fixes: 869f37d8e48f ("[NETFILTER]: nf_conntrack/nf_nat: add IRC helper port") Signed-off-by: David Leadbeater <dgl@dgl.cx> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'net/netfilter')
-rw-r--r--net/netfilter/nf_conntrack_irc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/netfilter/nf_conntrack_irc.c b/net/netfilter/nf_conntrack_irc.c
index 08ee4e760a3d..18b90e334b5b 100644
--- a/net/netfilter/nf_conntrack_irc.c
+++ b/net/netfilter/nf_conntrack_irc.c
@@ -188,8 +188,9 @@ static int help(struct sk_buff *skb, unsigned int protoff,
/* dcc_ip can be the internal OR external (NAT'ed) IP */
tuple = &ct->tuplehash[dir].tuple;
- if (tuple->src.u3.ip != dcc_ip &&
- tuple->dst.u3.ip != dcc_ip) {
+ if ((tuple->src.u3.ip != dcc_ip &&
+ ct->tuplehash[!dir].tuple.dst.u3.ip != dcc_ip) ||
+ dcc_port == 0) {
net_warn_ratelimited("Forged DCC command from %pI4: %pI4:%u\n",
&tuple->src.u3.ip,
&dcc_ip, dcc_port);