CVE-2025-23133
Severity CVSS v4.0:
Pending analysis
Type:
CWE-787
Out-of-bounds Write
Publication date:
16/04/2025
Last modified:
04/11/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
wifi: ath11k: update channel list in reg notifier instead reg worker<br />
<br />
Currently when ath11k gets a new channel list, it will be processed<br />
according to the following steps:<br />
1. update new channel list to cfg80211 and queue reg_work.<br />
2. cfg80211 handles new channel list during reg_work.<br />
3. update cfg80211&#39;s handled channel list to firmware by<br />
ath11k_reg_update_chan_list().<br />
<br />
But ath11k will immediately execute step 3 after reg_work is just<br />
queued. Since step 2 is asynchronous, cfg80211 may not have completed<br />
handling the new channel list, which may leading to an out-of-bounds<br />
write error:<br />
BUG: KASAN: slab-out-of-bounds in ath11k_reg_update_chan_list<br />
Call Trace:<br />
ath11k_reg_update_chan_list+0xbfe/0xfe0 [ath11k]<br />
kfree+0x109/0x3a0<br />
ath11k_regd_update+0x1cf/0x350 [ath11k]<br />
ath11k_regd_update_work+0x14/0x20 [ath11k]<br />
process_one_work+0xe35/0x14c0<br />
<br />
Should ensure step 2 is completely done before executing step 3. Thus<br />
Wen raised patch[1]. When flag NL80211_REGDOM_SET_BY_DRIVER is set,<br />
cfg80211 will notify ath11k after step 2 is done.<br />
<br />
So enable the flag NL80211_REGDOM_SET_BY_DRIVER then cfg80211 will<br />
notify ath11k after step 2 is done. At this time, there will be no<br />
KASAN bug during the execution of the step 3.<br />
<br />
[1] https://patchwork.kernel.org/project/linux-wireless/patch/20230201065313.27203-1-quic_wgong@quicinc.com/<br />
<br />
Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
Impact
Base Score 3.x
7.80
Severity 3.x
HIGH
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.15.79 (including) | 5.16 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.0.9 (including) | 6.1 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.1.1 (including) | 6.12.46 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (including) | 6.14.2 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.1:-:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.1:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.1:rc6:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.1:rc7:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.1:rc8:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page



