• Florian Westphal's avatar
    net/sched: act_ipt: add sanity checks on table name and hook locations · b4ee9338
    Florian Westphal authored
    Looks like "tc" hard-codes "mangle" as the only supported table
    name, but on kernel side there are no checks.
    
    This is wrong.  Not all xtables targets are safe to call from tc.
    E.g. "nat" targets assume skb has a conntrack object assigned to it.
    Normally those get called from netfilter nat core which consults the
    nat table to obtain the address mapping.
    
    "tc" userspace either sets PRE or POSTROUTING as hook number, but there
    is no validation of this on kernel side, so update netlink policy to
    reject bogus numbers.  Some targets may assume skb_dst is set for
    input/forward hooks, so prevent those from being used.
    
    act_ipt uses the hook number in two places:
    1. the state hook number, this is fine as-is
    2. to set par.hook_mask
    
    The latter is a bit mask, so update the assignment to make
    xt_check_target() to the right thing.
    
    Followup patch adds required checks for the skb/packet headers before
    calling the targets evaluation function.
    
    Fixes: 1da177e4 ("Linux-2.6.12-rc2")
    Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
    Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
    Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    b4ee9338
act_ipt.c 9.66 KB