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
commit 31b0b38 upstream.

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>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Linus Torvalds authored and Greg Kroah-Hartman committed May 19, 2016
1 parent 62b6836 commit 6ff8315
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 @@ -1757,6 +1757,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 @@ -1779,7 +1780,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 6ff8315

Please sign in to comment.