In the Linux kernel, the following vulnerability has been resolved:
wifi: mac80211: Don't finalize CSA in IBSS mode if state is disconnected
When we are not connected to a channel, sending channel "switch" announcement doesn't make any sense.
The BSS list is empty in that case. This causes the for loop in cfg80211_get_bss() to be bypassed, so the function returns NULL (check line 1424 of net/wireless/scan.c), causing the WARN_ON() in ieee80211_ibss_csa_beacon() to get triggered (check line 500 of net/mac80211/ibss.c), which was consequently reported on the syzkaller dashboard.
Thus, check if we have an existing connection before generating the CSA beacon in ieee80211_ibss_finish_csa().
| Software | From | Fixed in |
|---|---|---|
| linux / linux_kernel | 3.13 | 4.9.328 |
| linux / linux_kernel | 4.10 | 4.14.293 |
| linux / linux_kernel | 4.15 | 4.19.258 |
| linux / linux_kernel | 4.20 | 5.4.213 |
| linux / linux_kernel | 5.5 | 5.10.142 |
| linux / linux_kernel | 5.11 | 5.15.66 |
| linux / linux_kernel | 5.16 | 5.19.8 |
| linux / linux_kernel | 6.0-rc1 | 6.0-rc1.x |
| linux / linux_kernel | 6.0-rc2 | 6.0-rc2.x |
| linux / linux_kernel | 6.0-rc3 | 6.0-rc3.x |