aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/netfilter/nft_fib_ipv4.c
diff options
context:
space:
mode:
authorGuillaume Nault <gnault@redhat.com>2022-10-13 16:37:47 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2022-10-19 08:46:48 +0200
commit1fcc064b305a1aadeff0d4bff961094d27660acd (patch)
tree8dcb7515e4d412cc7787785dcdcb1339f0f2d7c7 /net/ipv4/netfilter/nft_fib_ipv4.c
parentip6mr: fix UAF issue in ip6mr_sk_done() when addrconf_init_net() failed (diff)
downloadlinux-dev-1fcc064b305a1aadeff0d4bff961094d27660acd.tar.xz
linux-dev-1fcc064b305a1aadeff0d4bff961094d27660acd.zip
netfilter: rpfilter/fib: Set ->flowic_uid correctly for user namespaces.
Currently netfilter's rpfilter and fib modules implicitely initialise ->flowic_uid with 0. This is normally the root UID. However, this isn't the case in user namespaces, where user ID 0 is mapped to a different kernel UID. By initialising ->flowic_uid with sock_net_uid(), we get the root UID of the user namespace, thus keeping the same behaviour whether or not we're running in a user namepspace. Note, this is similar to commit 8bcfd0925ef1 ("ipv4: add missing initialization for flowi4_uid"), which fixed the rp_filter sysctl. Fixes: 622ec2c9d524 ("net: core: add UID to flows, rules, and routes") Signed-off-by: Guillaume Nault <gnault@redhat.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to '')
-rw-r--r--net/ipv4/netfilter/nft_fib_ipv4.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv4/netfilter/nft_fib_ipv4.c b/net/ipv4/netfilter/nft_fib_ipv4.c
index e886147eed11..fc65d69f23e1 100644
--- a/net/ipv4/netfilter/nft_fib_ipv4.c
+++ b/net/ipv4/netfilter/nft_fib_ipv4.c
@@ -65,6 +65,7 @@ void nft_fib4_eval(const struct nft_expr *expr, struct nft_regs *regs,
struct flowi4 fl4 = {
.flowi4_scope = RT_SCOPE_UNIVERSE,
.flowi4_iif = LOOPBACK_IFINDEX,
+ .flowi4_uid = sock_net_uid(nft_net(pkt), NULL),
};
const struct net_device *oif;
const struct net_device *found;