Linux: Use After Free
CVE-2026-63905 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 61704e5cf9cd7464b510eb606e7e2978b1160a64, dcc1c90b28b28b7c493547506297e78653f81952, 1036ac6148995feaf486014d32bf26bf993c06a9 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.17% chance of exploitation within 30 days, which is low compared with other CVEs.
High severity with no evidence of exploitation so far.
What to do
- Update Linux to 61704e5cf9cd7464b510eb606e7e2978b1160a64 or dcc1c90b28b28b7c493547506297e78653f81952 or 1036ac6148995feaf486014d32bf26bf993c06a9 or a0638db2340ee053ab0450656a763fd111475e54, whichever matches your release line, or a later version.
- Update Linux Kernel to 5.10.259 or 5.15.210 or 6.1.176 or 6.6.143, whichever matches your release line, or a later version.
Affected products and versions
| Vendor | Product | Affected versions | Fixed in |
|---|---|---|---|
| Linux | Linux | b6a0ca11186759ad7045d68a5447b1e89f658384 up to, but not including, 61704e5cf9cd7464b510eb606e7e2978b1160a64; b6a0ca11186759ad7045d68a5447b1e89f658384 up to, but not including, dcc1c90b28b28b7c493547506297e78653f81952; b6a0ca11186759ad7045d68a5447b1e89f658384 up to, but not including, 1036ac6148995feaf486014d32bf26bf993c06a9; b6a0ca11186759ad7045d68a5447b1e89f658384 up to, but not including, a0638db2340ee053ab0450656a763fd111475e54; b6a0ca11186759ad7045d68a5447b1e89f658384 up to, but not including, d07ed707467ce05ea9c03412d0c5ee9d0fe386a6; b6a0ca11186759ad7045d68a5447b1e89f658384 up to, but not including, 88d459e5b5a46da1ef9fd6f52d9439343edeec88; b6a0ca11186759ad7045d68a5447b1e89f658384 up to, but not including, 207bf80362df3fce8ebc9723351dcb1bc6d9ed0f; b6a0ca11186759ad7045d68a5447b1e89f658384 up to, but not including, d96209626a29ea64666be98c30b30ac82e5f1be6; and 1 more ranges | 61704e5cf9cd7464b510eb606e7e2978b1160a64, dcc1c90b28b28b7c493547506297e78653f81952, 1036ac6148995feaf486014d32bf26bf993c06a9, a0638db2340ee053ab0450656a763fd111475e54, d07ed707467ce05ea9c03412d0c5ee9d0fe386a6, 88d459e5b5a46da1ef9fd6f52d9439343edeec88 |
| Linux | Linux Kernel | 4.7 up to, but not including, 5.10.259; 5.11 up to, but not including, 5.15.210; 5.16 up to, but not including, 6.1.176; 6.2 up to, but not including, 6.6.143; 6.7 up to, but not including, 6.12.93; 6.13 up to, but not including, 6.18.35; 6.19 up to, but not including, 7.0.12; 7.1 | 5.10.259, 5.15.210, 6.1.176, 6.6.143, 6.12.93, 6.18.35 |
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.
Official description
In the Linux kernel, the following vulnerability has been resolved: usbip: vudc: Fix use after free bug in vudc_remove due to race condition This patch follows up Zheng Wang's 2023 report of a use-after-free in vudc_remove(). The original thread stalled on Shuah Khan's request for runtime testing of the unplug/unbind path. This patch supplies that testing and keeps Zheng's original fix shape. In vudc_probe(), v_init_timer() binds udc->tr_timer.timer to v_timer(). usbip_sockfd_store() starts the timer via v_start_timer()/v_kick_timer(). vudc_remove() can then free the containing struct vudc while the timer is still pending or executing. KASAN confirms the race on an unpatched x86_64 QEMU guest with CONFIG_KASAN=y, CONFIG_USBIP_VUDC=y, CONFIG_USB_ZERO=y, and a tight loop that repeatedly writes a socket fd to usbip_sockfd, closes the socket pair, and unbinds/rebinds usbip-vudc.0: BUG: KASAN: slab-use-after-free in __run_timer_base.part.0+0x8ba/0x8e0 Write of size 8 at addr ffff888001b80740 by task trigger_and_unb/239 Allocated by task 239: vudc_probe+0x4d/0xaa0 Freed by task 239: kfree+0x18f/0x520 device_release_driver_internal+0x388/0x540 unbind_store+0xd9/0x100 This lands in the timer core rather than v_timer() itself because the embedded timer_list is being walked after its containing struct vudc has already been freed. The underlying lifetime bug is the same one Zheng reported. With v_stop_timer() called from vudc_remove() and the timer deleted synchronously, the same harness completed 5000 bind/unbind iterations with no KASAN report.
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.
Timeline
- CVE record published.
- Record last changed materially (score, affected products, status or references).
References
Patches and release notes
- git.kernel.org/stable/c/1036ac6148995feaf486014d32bf26bf993c06a9
- git.kernel.org/stable/c/207bf80362df3fce8ebc9723351dcb1bc6d9ed0f
- git.kernel.org/stable/c/61704e5cf9cd7464b510eb606e7e2978b1160a64
- git.kernel.org/stable/c/88d459e5b5a46da1ef9fd6f52d9439343edeec88
- git.kernel.org/stable/c/a0638db2340ee053ab0450656a763fd111475e54
- git.kernel.org/stable/c/d07ed707467ce05ea9c03412d0c5ee9d0fe386a6
- git.kernel.org/stable/c/d96209626a29ea64666be98c30b30ac82e5f1be6
- git.kernel.org/stable/c/dcc1c90b28b28b7c493547506297e78653f81952
Recent Use After Free vulnerabilities
- 8.8 High severity
- 9.8 Critical severity
- 9.8 Critical severity
- 7.8 High severity
- 9.8 Critical severity
- 8.8 High severity
Spotted an error? Tell us.