Skip to content

Commit

Permalink
nf_conntrack: avoid kernel pointer value leak in slab name
Browse files Browse the repository at this point in the history
The slab name ends up being visible in the directory structure under
/sys, and even if you don't have access rights to the file you can see
the filenames.

Just use a 64-bit counter instead of the pointer to the 'net' structure
to generate a unique name.

This code will go away in 4.7 when the conntrack code moves to a single
kmemcache, but this is the backportable simple solution to avoiding
leaking kernel pointers to user space.

Fixes: 5b3501f ("netfilter: nf_conntrack: per netns nf_conntrack_cachep")
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
torvalds authored and davem330 committed May 14, 2016
1 parent b915065 commit 31b0b38
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion net/netfilter/nf_conntrack_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1778,6 +1778,7 @@ void nf_conntrack_init_end(void)

int nf_conntrack_init_net(struct net *net)
{
static atomic64_t unique_id;
int ret = -ENOMEM;
int cpu;

Expand All @@ -1800,7 +1801,8 @@ int nf_conntrack_init_net(struct net *net)
if (!net->ct.stat)
goto err_pcpu_lists;

net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%p", net);
net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%llu",
(u64)atomic64_inc_return(&unique_id));
if (!net->ct.slabname)
goto err_slabname;

Expand Down

0 comments on commit 31b0b38

Please sign in to comment.