Thread (6 messages) flat view 6 messages, 4 authors, 2015-05-21

Re: netfilter: ensure number of counters is >0 in do_replace()

From: Pablo Neira Ayuso <pablo@netfilter.org>
Date: 2015-05-21 11:42:03
Also in: netfilter-devel

On Tue, May 19, 2015 at 08:55:17PM -0400, Dave Jones wrote:
After improving setsockopt() coverage in trinity, I started triggering
vmalloc failures pretty reliably from this code path:

warn_alloc_failed+0xe9/0x140
__vmalloc_node_range+0x1be/0x270
vzalloc+0x4b/0x50
__do_replace+0x52/0x260 [ip_tables]
do_ipt_set_ctl+0x15d/0x1d0 [ip_tables]
nf_setsockopt+0x65/0x90
ip_setsockopt+0x61/0xa0
raw_setsockopt+0x16/0x60
sock_common_setsockopt+0x14/0x20
SyS_setsockopt+0x71/0xd0

It turns out we don't validate that the num_counters field in the
struct we pass in from userspace is initialized.

The same problem also exists in ebtables, arptables, ipv6, and the
compat variants.
Applied.

This also applies to -stable kernels:

3.2.x
3.4.x
3.10.x
3.12.x
3.14.x
3.18.x
4.0.x

so after some testing and a little while, I'll pass this on.

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