Ad

CVE-2026-74366

NONE EPSS 0.17%
Обновлено 17 августа 2026
Linux
Параметр Значение
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: wifi: ath12k: исправлено отключение NULL в Change_sta_links для неготовой ссылки _ieee80211_set_active_links() вызывает _ieee80211_link_use_channel() для каждую вновь добавленную ссылку и WARN_ON_ONCE() в случае сбоя. В вызове используется Assign_on_failure=true, что позволяет mac80211 продолжить работу, несмотря на сбои драйвера, но когда проверка канала на уровне mac80211 не удалась (например, проверка комбинаций, DFS или отсутствие доступного радио), drv_assign_vif_chanctx() никогда не достигается. Поскольку ath12k_mac_vdev_create() вызывается только по этому пути, arvif->is_created остается ложным и arvif->ar остается NULL для неудавшейся ссылки.

Последующий вызов drv_change_sta_links() достигает ath12k_mac_op_change_sta_links(), который выделяет арста и устанавливает ahsta->links_map |= BIT(link_id) для неработающей ссылки перед проверкой готова ли ссылка. Когда vdev никогда не создавался, только Station_add() пропускается, но ссылка остается в linked_map. Любая последующая операция, повторяющая link_map и разыменовывающая arvif->ar. без проверки NULL произойдет сбой.

Два наблюдаемых примера имеют разыменование NULL в ath12k_mac_ml_station_remove() при отключении и в ath12k_mac_op_set_key() когда wpa_supplicant устанавливает ключи PTK. ОШИБКА: невозможно обработать разыменование нулевого указателя ядра по адресу 0x00000000. ПК: ath12k_mac_station_post_remove+0x40/0xe8 [ath12k] Трассировка звонков: ath12k_mac_station_post_remove+0x40/0xe8 [ath12k] ath12k_mac_op_sta_state+0xb60/0x1720 [ath12k] drv_sta_state+0x100/0xbd8 [mac80211] __sta_info_destroy_part2+0x148/0x178 [mac80211] ieee80211_set_disassoc+0x500/0x678 [mac80211] ОШИБКА: невозможно обработать разыменование нулевого указателя ядра по адресу 0x00000000.

ПК: ath12k_mac_op_set_key+0x1f8/0x2c0 [ath12k] Трассировка звонков: ath12k_mac_op_set_key+0x1f8/0x2c0 [ath12k] drv_set_key+0x70/0x100 [mac80211] ieee80211_key_enable_hw_accel+0x78/0x260 [mac80211] ieee80211_add_key+0x16c/0x2ac [mac80211] nl80211_new_key+0x138/0x280 [cfg80211] Исправьте это, проверив arvif->is_created перед вызовом. ath12k_mac_alloc_assign_link_sta(). Это предотвращает появление неработающей ссылки. ввод linked_map, поэтому все последующие операции повторяют растровое изображение защищены. Надежность arvif->is_created при всех ошибках path обеспечивается предыдущим патчем.

Протестировано на: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.115823.3

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: wifi: ath12k: fix NULL deref in change_sta_links for unready link _ieee80211_set_active_links() calls _ieee80211_link_use_channel() for each newly-added link and WARN_ON_ONCE()s if it fails. The call uses assign_on_failure=true, which allows mac80211 to continue despite driver failures, but when a mac80211-level channel validation fails (e.g., combinations check, DFS, or no available radio), drv_assign_vif_chanctx() is never reached. Since ath12k_mac_vdev_create() is only called from that path, arvif->is_created remains false and arvif->ar remains NULL for the failed link. The subsequent drv_change_sta_links() call reaches ath12k_mac_op_change_sta_links(), which allocates an arsta and sets ahsta->links_map |= BIT(link_id) for the broken link before checking whether the link is ready. When the vdev was never created, only station_add() is skipped, but the link remains in links_map. Any subsequent operation iterating links_map and dereferencing arvif->ar without a NULL check will crash. Two observed examples are NULL deref in ath12k_mac_ml_station_remove() on disconnect and in ath12k_mac_op_set_key() when wpa_supplicant installs PTK keys. BUG: Unable to handle kernel NULL pointer dereference at 0x00000000 pc : ath12k_mac_station_post_remove+0x40/0xe8 [ath12k] Call trace: ath12k_mac_station_post_remove+0x40/0xe8 [ath12k] ath12k_mac_op_sta_state+0xb60/0x1720 [ath12k] drv_sta_state+0x100/0xbd8 [mac80211] __sta_info_destroy_part2+0x148/0x178 [mac80211] ieee80211_set_disassoc+0x500/0x678 [mac80211] BUG: Unable to handle kernel NULL pointer dereference at 0x00000000 pc : ath12k_mac_op_set_key+0x1f8/0x2c0 [ath12k] Call trace: ath12k_mac_op_set_key+0x1f8/0x2c0 [ath12k] drv_set_key+0x70/0x100 [mac80211] ieee80211_key_enable_hw_accel+0x78/0x260 [mac80211] ieee80211_add_key+0x16c/0x2ac [mac80211] nl80211_new_key+0x138/0x280 [cfg80211] Fix this by checking arvif->is_created before calling ath12k_mac_alloc_assign_link_sta(). This prevents the broken link from entering links_map, so all subsequent operations iterating the bitmap are protected. The reliability of arvif->is_created across all error paths is ensured by the preceding patch. Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.115823.3