CVE-2023-54300

Summary

In the Linux kernel, the following vulnerability has been resolved:

wifi: ath9k: avoid referencing uninit memory in ath9k_wmi_ctrl_rx

For the reasons also described in commit b383e8abed41 ("wifi: ath9k: avoid uninit memory read in ath9k_htc_rx_msg()"), ath9k_htc_rx_msg() should validate pkt_len before accessing the SKB.

For example, the obtained SKB may have been badly constructed with pkt_len = 8. In this case, the SKB can only contain a valid htc_frame_hdr but after being processed in ath9k_htc_rx_msg() and passed to ath9k_wmi_ctrl_rx() endpoint RX handler, it is expected to have a WMI command header which should be located inside its data payload.

Implement sanity checking inside ath9k_wmi_ctrl_rx(). Otherwise, uninit memory can be referenced.

Tested on Qualcomm Atheros Communications AR9271 802.11n .

Found by Linux Verification Center (linuxtesting.org) with Syzkaller.

Affected Software

VendorProductVersion RangeStatus
LinuxLinuxfb9987d0f748c983bb795a86f47522313f701a08 < 0bc12e41af4e3ae1f0efecc377f0514459df0707affected
LinuxLinuxfb9987d0f748c983bb795a86f47522313f701a08 < 28259ce4f1f1f9ab37fa817756c89098213d2fc0affected
LinuxLinuxfb9987d0f748c983bb795a86f47522313f701a08 < 90e3c10177573b8662ac9858abd9bf731d5d98e0affected
LinuxLinuxfb9987d0f748c983bb795a86f47522313f701a08 < 250efb4d3f5b32a115ea6bf25437ba44a1b3c04faffected
LinuxLinuxfb9987d0f748c983bb795a86f47522313f701a08 < ad5425e70789c29b93acafb5bb4629e4eb908296affected
LinuxLinuxfb9987d0f748c983bb795a86f47522313f701a08 < d1c2ff2bd84c3692c9df267a2b991ce92bfca8efaffected
LinuxLinuxfb9987d0f748c983bb795a86f47522313f701a08 < 8ed572e52714593b209e3aa352406aff84481179affected
LinuxLinuxfb9987d0f748c983bb795a86f47522313f701a08 < 75acec91aeaa07375cd5f418069e61b16d39bbadaffected
LinuxLinuxfb9987d0f748c983bb795a86f47522313f701a08 < f24292e827088bba8de7158501ac25a59b064953affected
LinuxLinux2.6.35affected
LinuxLinux0 < 2.6.35unaffected
LinuxLinux4.14.322 <= 4.14.*unaffected
LinuxLinux4.19.291 <= 4.19.*unaffected
LinuxLinux5.4.251 <= 5.4.*unaffected
LinuxLinux5.10.188 <= 5.10.*unaffected
LinuxLinux5.15.121 <= 5.15.*unaffected
LinuxLinux6.1.39 <= 6.1.*unaffected
LinuxLinux6.3.13 <= 6.3.*unaffected
LinuxLinux6.4.4 <= 6.4.*unaffected
LinuxLinux6.5 <= *unaffected

Weaknesses

References