Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 36f7b71f authored by David Leadbeater's avatar David Leadbeater Committed by Greg Kroah-Hartman
Browse files

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: 869f37d8 ("[NETFILTER]: nf_conntrack/nf_nat: add IRC helper port")
Signed-off-by: default avatarDavid Leadbeater <dgl@dgl.cx>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 323b6847
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -185,8 +185,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);