• Keith Yeo's avatar
    wifi: nl80211: fix integer overflow in nl80211_parse_mbssid_elems() · 6311071a
    Keith Yeo authored
    nl80211_parse_mbssid_elems() uses a u8 variable num_elems to count the
    number of MBSSID elements in the nested netlink attribute attrs, which can
    lead to an integer overflow if a user of the nl80211 interface specifies
    256 or more elements in the corresponding attribute in userspace. The
    integer overflow can lead to a heap buffer overflow as num_elems determines
    the size of the trailing array in elems, and this array is thereafter
    written to for each element in attrs.
    
    Note that this vulnerability only affects devices with the
    wiphy->mbssid_max_interfaces member set for the wireless physical device
    struct in the device driver, and can only be triggered by a process with
    CAP_NET_ADMIN capabilities.
    
    Fix this by checking for a maximum of 255 elements in attrs.
    
    Cc: stable@vger.kernel.org
    Fixes: dc1e3cb8 ("nl80211: MBSSID and EMA support in AP mode")
    Signed-off-by: default avatarKeith Yeo <keithyjy@gmail.com>
    Link: https://lore.kernel.org/r/20230731034719.77206-1-keithyjy@gmail.comSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    6311071a
nl80211.c 545 KB