CyberSecBulletin
CVE-2025-39863NVD status: Modified

Linux: Use After Free

CVE-2025-39863 is a high-severity use after free vulnerability in Linux, with a CVSS 3.1 base score of 7.8 out of 10. It can be exploited with local access to the system by an attacker with a low-privileged account, without any action from a user. The record lists versions c75600e69e66a751cc046cd9c407b942f298d852, ae58f70bde0433f27ef4b388ab50634736607bf6, f1150153c4e5940fe49ab51136343c5b4fe49d63 as the first without the flaw, so updating Linux to one of those releases or later removes the exposure. There is no confirmed exploitation so far. EPSS estimates a 0.16% chance of exploitation within 30 days, which is low compared with other CVEs.

Next patch cycle

High severity with no evidence of exploitation so far.

What to do

  1. Update Linux to c75600e69e66a751cc046cd9c407b942f298d852 or ae58f70bde0433f27ef4b388ab50634736607bf6 or f1150153c4e5940fe49ab51136343c5b4fe49d63 or 3e789f8475f6c857c88de5c5bf4b24b11a477dd7, whichever matches your release line, or a later version.
  2. Update Linux Kernel to 6.6.105 or 6.12.46 or 6.16.6, whichever matches your release line, or a later version.

Affected products and versions

VendorProductAffected versionsFixed in
LinuxLinux61730d4dfffc2cc9d3a49fad87633008105c18ba up to, but not including, c75600e69e66a751cc046cd9c407b942f298d852; 61730d4dfffc2cc9d3a49fad87633008105c18ba up to, but not including, ae58f70bde0433f27ef4b388ab50634736607bf6; 61730d4dfffc2cc9d3a49fad87633008105c18ba up to, but not including, f1150153c4e5940fe49ab51136343c5b4fe49d63; 61730d4dfffc2cc9d3a49fad87633008105c18ba up to, but not including, 3e789f8475f6c857c88de5c5bf4b24b11a477dd7; 61730d4dfffc2cc9d3a49fad87633008105c18ba up to, but not including, 2f6fbc8e04ca1d1d5c560be694199f847229c625; 61730d4dfffc2cc9d3a49fad87633008105c18ba up to, but not including, 9cb83d4be0b9b697eae93d321e0da999f9cdfcfc; 3.10c75600e69e66a751cc046cd9c407b942f298d852, ae58f70bde0433f27ef4b388ab50634736607bf6, f1150153c4e5940fe49ab51136343c5b4fe49d63, 3e789f8475f6c857c88de5c5bf4b24b11a477dd7, 2f6fbc8e04ca1d1d5c560be694199f847229c625, 9cb83d4be0b9b697eae93d321e0da999f9cdfcfc
SiemensSIMATIC S7-1500 TM MFP - GNU/Linux subsystemall versionsNot stated
LinuxLinux Kernel3.10 up to, but not including, 6.6.105; 6.7 up to, but not including, 6.12.46; 6.13 up to, but not including, 6.16.6; 6.176.6.105, 6.12.46, 6.16.6

Version data comes from the organisation that assigned the CVE. Confirm against the vendor advisory before deciding you are unaffected.

How the severity score breaks down

Attack vector
LocalThe attacker needs local access or must trick a user into running something.
Attack complexity
LowNo special conditions are needed; the attack works reliably.
Privileges required
LowA basic user account is enough.
User interaction
NoneNo action by a victim is required.
Scope
UnchangedImpact stays within the vulnerable component.
Confidentiality
HighAll data handled by the component can be read.
Integrity
HighData or code can be modified at will.
Availability
HighThe component can be taken down completely.

Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H. Scored by NVD.

Scoring systemScoreSeverityScored by
CVSS 3.17.8HighCNA
CVSS 3.17.8HighNVD
CVSS 3.17.8HighCISA (ADP)

Official description

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.

Source: the CVE record as published by its numbering authority, via NVD and CVE.org.

The underlying weakness: Use After Free

The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory belongs to the code that operates on the new pointer.

How developers prevent this class of flaw

  • Choose a language that provides automatic memory management.
  • When freeing pointers, be sure to set them to NULL once they are freed. However, the utilization of multiple or complex data structures may lower the usefulness of this strategy.

More Use After Free vulnerabilities (CWE-416)

Timeline

  1. CVE record published.
  2. CISA published its SSVC assessment (exploitation: none, automatable: no, technical impact: total).
  3. Record last changed materially (score, affected products, status or references).

References

Recent Use After Free vulnerabilities

Spotted an error? Tell us.