-
CVE-2025-39863
- EPSS 0.02%
- Published 19.09.2025 15:26:33
- Last modified 22.09.2025 21:23:01
- Source 416baaa9-dc9f-4396-8d5f-8c081f
- Teams watchlist Login
- Open Login
In the Linux kernel, the following vulnerability has been resolved: wifi: brcmfmac: fix use-after-free when rescheduling brcmf_btcoex_info work The brcmf_btcoex_detach() only shuts down the btcoex timer, if the flag timer_on is false. However, the brcmf_btcoex_timerfunc(), which runs as timer handler, sets timer_on to false. This creates critical race conditions: 1.If brcmf_btcoex_detach() is called while brcmf_btcoex_timerfunc() is executing, it may observe timer_on as false and skip the call to timer_shutdown_sync(). 2.The brcmf_btcoex_timerfunc() may then reschedule the brcmf_btcoex_info worker after the cancel_work_sync() has been executed, resulting in use-after-free bugs. The use-after-free bugs occur in two distinct scenarios, depending on the timing of when the brcmf_btcoex_info struct is freed relative to the execution of its worker thread. Scenario 1: Freed before the worker is scheduled The brcmf_btcoex_info is deallocated before the worker is scheduled. A race condition can occur when schedule_work(&bt_local->work) is called after the target memory has been freed. The sequence of events is detailed below: CPU0 | CPU1 brcmf_btcoex_detach | brcmf_btcoex_timerfunc | bt_local->timer_on = false; if (cfg->btcoex->timer_on) | ... | cancel_work_sync(); | ... | kfree(cfg->btcoex); // FREE | | schedule_work(&bt_local->work); // USE Scenario 2: Freed after the worker is scheduled The brcmf_btcoex_info is freed after the worker has been scheduled but before or during its execution. In this case, statements within the brcmf_btcoex_handler() — such as the container_of macro and subsequent dereferences of the brcmf_btcoex_info object will cause a use-after-free access. The following timeline illustrates this scenario: CPU0 | CPU1 brcmf_btcoex_detach | brcmf_btcoex_timerfunc | bt_local->timer_on = false; if (cfg->btcoex->timer_on) | ... | cancel_work_sync(); | ... | schedule_work(); // Reschedule | kfree(cfg->btcoex); // FREE | brcmf_btcoex_handler() // Worker /* | btci = container_of(....); // USE The kfree() above could | ... also occur at any point | btci-> // USE during the worker's execution| */ | To resolve the race conditions, drop the conditional check and call timer_shutdown_sync() directly. It can deactivate the timer reliably, regardless of its current state. Once stopped, the timer_on state is then set to false.
Verknüpft mit AI von unstrukturierten Daten zu bestehenden CPE der NVD
This information is available to logged-in users. Login
Daten sind bereitgestellt durch das CVE Programm von einer CVE Numbering Authority (CNA) (Unstrukturiert).
VendorLinux
≫
Product
Linux
Default Statusunaffected
Version <
f1150153c4e5940fe49ab51136343c5b4fe49d63
Version
61730d4dfffc2cc9d3a49fad87633008105c18ba
Status
affected
Version <
3e789f8475f6c857c88de5c5bf4b24b11a477dd7
Version
61730d4dfffc2cc9d3a49fad87633008105c18ba
Status
affected
Version <
2f6fbc8e04ca1d1d5c560be694199f847229c625
Version
61730d4dfffc2cc9d3a49fad87633008105c18ba
Status
affected
Version <
9cb83d4be0b9b697eae93d321e0da999f9cdfcfc
Version
61730d4dfffc2cc9d3a49fad87633008105c18ba
Status
affected
VendorLinux
≫
Product
Linux
Default Statusaffected
Version
3.10
Status
affected
Version <
3.10
Version
0
Status
unaffected
Version <=
6.6.*
Version
6.6.105
Status
unaffected
Version <=
6.12.*
Version
6.12.46
Status
unaffected
Version <=
6.16.*
Version
6.16.6
Status
unaffected
Version <=
*
Version
6.17-rc5
Status
unaffected
Zu dieser CVE wurde keine CISA KEV oder CERT.AT-Warnung gefunden.
Type | Source | Score | Percentile |
---|---|---|---|
EPSS | FIRST.org | 0.02% | 0.048 |
Source | Base Score | Exploit Score | Impact Score | Vector string |
---|