All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] netlink: Add netns check on taps
@ 2017-12-05 22:46 Kevin Cernekee
  2017-12-06  2:19 ` David Ahern
  2017-12-06 19:40 ` David Miller
  0 siblings, 2 replies; 5+ messages in thread
From: Kevin Cernekee @ 2017-12-05 22:46 UTC (permalink / raw)
  To: davem; +Cc: johannes.berg, netdev, linux-kernel

Currently, a nlmon link inside a child namespace can observe systemwide
netlink activity.  Filter the traffic so that in a non-init netns,
nlmon can only sniff netlink messages from its own netns.

Test case:

    vpnns -- bash -c "ip link add nlmon0 type nlmon; \
                      ip link set nlmon0 up; \
                      tcpdump -i nlmon0 -q -w /tmp/nlmon.pcap -U" &
    sudo ip xfrm state add src 10.1.1.1 dst 10.1.1.2 proto esp \
        spi 0x1 mode transport \
        auth sha1 0x6162633132330000000000000000000000000000 \
        enc aes 0x00000000000000000000000000000000
    grep abc123 /tmp/nlmon.pcap

Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
---
 net/netlink/af_netlink.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index b9e0ee4..88381a2 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -253,6 +253,11 @@ static int __netlink_deliver_tap_skb(struct sk_buff *skb,
 	struct sock *sk = skb->sk;
 	int ret = -ENOMEM;
 
+	if (!net_eq(dev_net(dev), sock_net(sk)) &&
+	    !net_eq(dev_net(dev), &init_net)) {
+		return 0;
+	}
+
 	dev_hold(dev);
 
 	if (is_vmalloc_addr(skb->head))
-- 
2.7.4

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

end of thread, other threads:[~2017-12-06 20:51 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-05 22:46 [PATCH] netlink: Add netns check on taps Kevin Cernekee
2017-12-06  2:19 ` David Ahern
2017-12-06  3:14   ` Kevin Cernekee
2017-12-06 19:40 ` David Miller
2017-12-06 20:51   ` Daniel Borkmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.