ee4bb818ae
netfilter's do_replace() can overflow on addition within SMP_ALIGN() and/or on multiplication by NR_CPUS, resulting in a buffer overflow on the copy_from_user(). In practice, the overflow on addition is triggerable on all systems, whereas the multiplication one might require much physical memory to be present due to the check above. Either is sufficient to overwrite arbitrary amounts of kernel memory. I really hate adding the same check to all 4 versions of do_replace(), but the code is duplicate... Found by Solar Designer during security audit of OpenVZ.org Signed-Off-By: Kirill Korotaev <dev@openvz.org> Signed-Off-By: Solar Designer <solar@openwall.com> Signed-off-by: Patrck McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net> |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
ebt_802_3.c | ||
ebt_among.c | ||
ebt_arp.c | ||
ebt_arpreply.c | ||
ebt_dnat.c | ||
ebt_ip.c | ||
ebt_limit.c | ||
ebt_log.c | ||
ebt_mark.c | ||
ebt_mark_m.c | ||
ebt_pkttype.c | ||
ebt_redirect.c | ||
ebt_snat.c | ||
ebt_stp.c | ||
ebt_ulog.c | ||
ebt_vlan.c | ||
ebtable_broute.c | ||
ebtable_filter.c | ||
ebtable_nat.c | ||
ebtables.c |