• Petr Machata's avatar
    net: dcb: Validate netlink message in DCB handler · 826f328e
    Petr Machata authored
    DCB uses the same handler function for both RTM_GETDCB and RTM_SETDCB
    messages. dcb_doit() bounces RTM_SETDCB mesasges if the user does not have
    the CAP_NET_ADMIN capability.
    
    However, the operation to be performed is not decided from the DCB message
    type, but from the DCB command. Thus DCB_CMD_*_GET commands are used for
    reading DCB objects, the corresponding SET and DEL commands are used for
    manipulation.
    
    The assumption is that set-like commands will be sent via an RTM_SETDCB
    message, and get-like ones via RTM_GETDCB. However, this assumption is not
    enforced.
    
    It is therefore possible to manipulate DCB objects without CAP_NET_ADMIN
    capability by sending the corresponding command in an RTM_GETDCB message.
    That is a bug. Fix it by validating the type of the request message against
    the type used for the response.
    
    Fixes: 2f90b865
    
     ("ixgbe: this patch adds support for DCB to the kernel and ixgbe driver")
    Signed-off-by: default avatarPetr Machata <me@pmachata.org>
    Link: https://lore.kernel.org/r/a2a9b88418f3a58ef211b718f2970128ef9e3793.1608673640.git.me@pmachata.org
    
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    826f328e
dcbnl.c 52.6 KB