• D
    [NETFILTER]: Missed and reordered checks in {arp,ip,ip6}_tables · 590bdf7f
    Dmitry Mishin 提交于
    There is a number of issues in parsing user-provided table in
    translate_table(). Malicious user with CAP_NET_ADMIN may crash system by
    passing special-crafted table to the *_tables.
    
    The first issue is that mark_source_chains() function is called before entry
    content checks. In case of standard target, mark_source_chains() function
    uses t->verdict field in order to determine new position. But the check, that
    this field leads no further, than the table end, is in check_entry(), which
    is called later, than mark_source_chains().
    
    The second issue, that there is no check that target_offset points inside
    entry. If so, *_ITERATE_MATCH macro will follow further, than the entry
    ends. As a result, we'll have oops or memory disclosure.
    
    And the third issue, that there is no check that the target is completely
    inside entry. Results are the same, as in previous issue.
    Signed-off-by: NDmitry Mishin <dim@openvz.org>
    Acked-by: NKirill Korotaev <dev@openvz.org>
    Signed-off-by: NPatrick McHardy <kaber@trash.net>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    590bdf7f
ip6_tables.c 37.4 KB