0.0
NA
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
Affected Products

The following products are affected by CVE-2026-63905 vulnerability. Even if cvefeed.io is aware of the exact versions of the products that are affected, the information is not represented in the table below.

ID Vendor Product Action
1 Linux linux_kernel
Solution
Fix a use-after-free bug in vudc_remove by stopping the timer synchronously.
  • Apply the provided patch to the Linux kernel.
  • Ensure timers are stopped before freeing memory.
  • Test unplug/unbind path for race conditions.
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
EPSS is a daily estimate of the probability of exploitation activity being observed over the next 30 days. Following chart shows the EPSS score history of the vulnerability.