Thread (17 messages) 17 messages, 5 authors, 2014-09-13

Re: [PATCH net-next v4 2/9] net: filter: keep original BPF program around

From: David Miller <davem@davemloft.net>
Date: 2014-09-13 21:05:07

From: Daniel Borkmann <redacted>
Date: Fri, 12 Sep 2014 08:09:31 +0200
quoted
[PATCH] net: filter: fix possible use after free

If kmemdup() fails, we free fp->orig_prog and return -ENOMEM

sk_attach_filter()
  -> sk_filter_uncharge(sk, fp)
   -> sk_filter_release(fp)
    -> call_rcu(&fp->rcu, sk_filter_release_rcu)
     -> sk_filter_release_rcu()
      -> sk_release_orig_filter()
         fprog = fp->orig_prog; // not NULL, but points to freed memory
	  kfree(fprog->filter); // use after free, potential corruption
           kfree(fprog); // double free or corruption

Note: This was fixed in 3.17+ with commit 278571baca2a
("net: filter: simplify socket charging")

Found by AddressSanitizer

Signed-off-by: Eric Dumazet <edumazet@google.com>
Fixes: a3ea269b8bcdb ("net: filter: keep original BPF program around")
Thanks Eric!

Acked-by: Daniel Borkmann <redacted>
Queued up for -stable, thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help