CVE-2026-99061
NieznaneStreszczenie
W jądrze Linux w module brcmfmac występuje wyścig przy usuwaniu interfejsu P2P podczas odłączania sterownika. Gdy sterownik jest usuwany, a proces przestrzeni użytkownika (np. wpa_supplicant) nadal kończy działanie, interfejs P2P jest usuwany dwukrotnie, co prowadzi do błędu jądra (oops) i zawieszenia systemu.
Ocena ryzyka
Organizacja może doświadczyć awarii jądra i niedostępności systemu podczas rutynowej operacji usuwania sterownika Wi-Fi, zwłaszcza na urządzeniach z kartami Broadcom/Cypress SDIO. Może to prowadzić do przerwy w działaniu usług i utraty danych.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę lub zastosuj odpowiedni backport dla używanego jądra. Unikaj usuwania sterownika brcmfmac, gdy wpa_supplicant nadal działa — najpierw zakończ proces wpa_supplicant i poczekaj na jego zakończenie.
Inne podatności w Linux kernel (brcmfmac)
Zobacz wszystkie- CVE-2026-64586Wysokie
W jądrze Linux w sterowniku brcmfmac wykryto podatność polegającą na braku opróżnienia kolejki pracy bus_reset podczas usuwania urządzenia. Może to prowadzić do użycia po zwolnieniu pamięci (use-after-free), gdy wywołanie zwrotne bus_reset działa po zwolnieniu struktury drvr.
- CVE-2025-40321Niskie ryzyko· EPSS 9%
W jądrze Linux w sterowniku brcmfmac (WiFi Broadcom) występuje błąd polegający na tym, że przy wysyłaniu ramek Action driver zawsze używa interfejsu P2P vif. Gdy interfejsem zarządza tylko hostapd (tryb standalone AP), interfejs P2P nie jest inicjalizowany, co prowadzi do dereferencji wskaźnika NULL i awarii sterownika (kernel panic). Problem można wywołać zdalnie, wysyłając ramkę ANQP Query REQ nawet z niepowiązanej stacji.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: wifi: brcmfmac: fix P2P device removal race in brcmf_detach() When the driver is removed while the user space process that created the P2P device (e.g. wpa_supplicant) is still exiting, the P2P device interface is removed twice and the kernel crashes. The two paths are: - wpa_supplicant, on exit, sends NL80211_CMD_DEL_INTERFACE for the P2P device. nl80211_del_interface() holds RTNL and the wiphy mutex and calls brcmf_p2p_del_vif(), which disables discovery and waits up to 1.5 s for BRCMF_E_IF_DEL. Then it calls brcmf_remove_interface(), which unregisters the wdev and frees the vif and the ifp. - brcmf_detach() sets the bus down, so BRCMF_E_IF_DEL never arrives, and calls brcmf_remove_interface(ifp, false) for the same ifp. brcmf_p2p_ifp_removed() reads ifp->vif and then blocks on rtnl_lock(). When brcmf_p2p_del_vif() releases RTNL, it calls cfg80211_unregister_wdev() on the wdev that was already unregistered and freed. The second list_del_rcu() of wdev->list faults on LIST_POISON2: brcmfmac: brcmf_p2p_del_vif delete P2P vif brcmfmac: brcmf_p2p_deinit_discovery enter brcmfmac: brcmf_p2p_del_vif P2P: GO_NEG_PHASE status cleared brcmfmac: brcmf_detach Enter brcmfmac: brcmf_bus_change_state 1 -> 0 brcmfmac: brcmf_remove_interface Enter, bsscfgidx=1, ifidx=0 brcmfmac: brcmf_del_if Enter, bsscfgidx=1, ifidx=0 brcmfmac: brcmf_p2p_ifp_removed P2P: device interface removed [1.5 s later, brcmf_p2p_del_vif() timed out] brcmfmac: brcmf_remove_interface Enter, bsscfgidx=1, ifidx=0 brcmfmac: brcmf_del_if Enter, bsscfgidx=1, ifidx=0 brcmfmac: brcmf_p2p_ifp_removed P2P: device interface removed Unable to handle kernel paging request at virtual address dead000000000122 Internal error: Oops: 96000044 [#1] PREEMPT_RT SMP pc : _cfg80211_unregister_wdev+0x6c/0x264 [cfg80211] Call trace: _cfg80211_unregister_wdev+0x6c/0x264 [cfg80211] cfg80211_unregister_wdev+0x10/0x1c [cfg80211] brcmf_p2p_ifp_removed+0x84/0xb0 [brcmfmac] brcmf_remove_interface+0x1f4/0x254 [brcmfmac] brcmf_detach+0x88/0x180 [brcmfmac] brcmf_sdio_remove+0x90/0x7b0 [brcmfmac] brcmf_sdiod_remove+0x20/0xa0 [brcmfmac] brcmf_ops_sdio_remove+0xbc/0x12c [brcmfmac] sdio_bus_remove+0x38/0x144 device_release_driver_internal+0x1e8/0x2c0 device_release_driver+0x14/0x20 brcmf_sdio_bus_remove+0x2c/0x40 [brcmfmac] brcmf_fwvid_unregister_vendor+0xd8/0x170 [brcmfmac] __exit_compat+0x18/0x418 [brcmfmac_cyw] __arm64_sys_delete_module+0x1ac/0x244 The log was taken with debug=0x406 on an i.MX 8M Plus board with a CYW55513 (Sona IF513) on SDIO. The driver is the Ezurio backport of brcmfmac from v6.18.22 on a 5.4-rt kernel. The code involved is the same in mainline. To reproduce: 1. Start wpa_supplicant on wlan0 and let it associate. It creates the P2P device (iw dev shows "type P2P-device"). 2. Stop wpa_supplicant and remove the driver without waiting for wpa_supplicant to exit: kill $(pidof wpa_supplicant) rmmod brcmfmac_cyw brcmfmac The crash is reproducible on that board. For the interface without a netdev (the P2P device), take RTNL and the wiphy mutex in brcmf_detach() before reading iflist, and remove it with locked=true. If brcmf_p2p_del_vif() runs first, brcmf_detach() finds the slot empty. If brcmf_detach() runs first, nl80211 does not find the wdev any more. The interfaces with a netdev are removed as before, because brcmf_del_if() takes RTNL on its own for the primary interface.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

