CVE-2026-63905
usbip: vudc: Fix use after free bug in vudc_remove due to race condition
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.
INFO
Published Date :
July 19, 2026, 4:17 p.m.
Last Modified :
July 27, 2026, 5:44 p.m.
Remotely Exploit :
No
Source :
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Solution
- Apply the provided patch to the Linux kernel.
- Ensure timers are stopped before freeing memory.
- Test unplug/unbind path for race conditions.
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2026-63905.
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2026-63905 is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2026-63905
weaknesses.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2026-63905 vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2026-63905 vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
New CVE Received by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Jul. 19, 2026
Action Type Old Value New Value Added Affected [{'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': 'b6a0ca11186759ad7045d68a5447b1e89f658384', 'lessThan': '61704e5cf9cd7464b510eb606e7e2978b1160a64', 'versionType': 'git'}, {'status': 'affected', 'version': 'b6a0ca11186759ad7045d68a5447b1e89f658384', 'lessThan': 'dcc1c90b28b28b7c493547506297e78653f81952', 'versionType': 'git'}, {'status': 'affected', 'version': 'b6a0ca11186759ad7045d68a5447b1e89f658384', 'lessThan': '1036ac6148995feaf486014d32bf26bf993c06a9', 'versionType': 'git'}, {'status': 'affected', 'version': 'b6a0ca11186759ad7045d68a5447b1e89f658384', 'lessThan': 'a0638db2340ee053ab0450656a763fd111475e54', 'versionType': 'git'}, {'status': 'affected', 'version': 'b6a0ca11186759ad7045d68a5447b1e89f658384', 'lessThan': 'd07ed707467ce05ea9c03412d0c5ee9d0fe386a6', 'versionType': 'git'}, {'status': 'affected', 'version': 'b6a0ca11186759ad7045d68a5447b1e89f658384', 'lessThan': '88d459e5b5a46da1ef9fd6f52d9439343edeec88', 'versionType': 'git'}, {'status': 'affected', 'version': 'b6a0ca11186759ad7045d68a5447b1e89f658384', 'lessThan': '207bf80362df3fce8ebc9723351dcb1bc6d9ed0f', 'versionType': 'git'}, {'status': 'affected', 'version': 'b6a0ca11186759ad7045d68a5447b1e89f658384', 'lessThan': 'd96209626a29ea64666be98c30b30ac82e5f1be6', 'versionType': 'git'}], 'programFiles': ['drivers/usb/usbip/vudc_dev.c', 'drivers/usb/usbip/vudc_transfer.c'], 'defaultStatus': 'unaffected'}, {'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '4.7'}, {'status': 'unaffected', 'version': '0', 'lessThan': '4.7', 'versionType': 'semver'}, {'status': 'unaffected', 'version': '5.10.259', 'versionType': 'semver', 'lessThanOrEqual': '5.10.*'}, {'status': 'unaffected', 'version': '5.15.210', 'versionType': 'semver', 'lessThanOrEqual': '5.15.*'}, {'status': 'unaffected', 'version': '6.1.176', 'versionType': 'semver', 'lessThanOrEqual': '6.1.*'}, {'status': 'unaffected', 'version': '6.6.143', 'versionType': 'semver', 'lessThanOrEqual': '6.6.*'}, {'status': 'unaffected', 'version': '6.12.93', 'versionType': 'semver', 'lessThanOrEqual': '6.12.*'}, {'status': 'unaffected', 'version': '6.18.35', 'versionType': 'semver', 'lessThanOrEqual': '6.18.*'}, {'status': 'unaffected', 'version': '7.0.12', 'versionType': 'semver', 'lessThanOrEqual': '7.0.*'}, {'status': 'unaffected', 'version': '7.1', 'versionType': 'original_commit_for_fix', 'lessThanOrEqual': '*'}], 'programFiles': ['drivers/usb/usbip/vudc_dev.c', 'drivers/usb/usbip/vudc_transfer.c'], 'defaultStatus': 'affected'}] Added 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. Added Reference https://git.kernel.org/stable/c/1036ac6148995feaf486014d32bf26bf993c06a9 Added Reference https://git.kernel.org/stable/c/207bf80362df3fce8ebc9723351dcb1bc6d9ed0f Added Reference https://git.kernel.org/stable/c/61704e5cf9cd7464b510eb606e7e2978b1160a64 Added Reference https://git.kernel.org/stable/c/88d459e5b5a46da1ef9fd6f52d9439343edeec88 Added Reference https://git.kernel.org/stable/c/a0638db2340ee053ab0450656a763fd111475e54 Added Reference https://git.kernel.org/stable/c/d07ed707467ce05ea9c03412d0c5ee9d0fe386a6 Added Reference https://git.kernel.org/stable/c/d96209626a29ea64666be98c30b30ac82e5f1be6 Added Reference https://git.kernel.org/stable/c/dcc1c90b28b28b7c493547506297e78653f81952