{"id":"CVE-2024-43883","state":"PUBLISHED","title":"usb: vhci-hcd: Do not drop references before new references are gained","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nusb: vhci-hcd: Do not drop references before new references are gained\n\nAt a few places the driver carries stale pointers\nto references that can still be used. Make sure that does not happen.\nThis strictly speaking closes ZDI-CAN-22273, though there may be\nsimilar races in the driver.","publishedAt":"2024-08-23T13:08:10.508Z","updatedAt":"2026-08-05T11:36:58.793Z","severity":{"score":9.8,"label":"Critical","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"5a3c473b28ae1c1f7c4dc129e30cb19ae6e96f89","versionType":"git"},{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"9c3746ce8d8fcb3a2405644fc0eec7fc5312de80","versionType":"git"},{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"4dacdb9720aaab10b6be121eae55820174d97174","versionType":"git"},{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"e8c1e606dab8c56cf074b43b98d0805de7322ba2","versionType":"git"},{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"585e6bc7d0a9bf73a8be3d3fb34e86b90cc61a14","versionType":"git"},{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"128e82e41cf7d74a562726c1587d9d2ede1a0a37","versionType":"git"},{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"c3d0857b7fc2c49f68f89128a5440176089a8f54","versionType":"git"},{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"afdcfd3d6fcdeca2735ca8d994c5f2d24a368f0a","versionType":"git"},{"version":"96ea4801d2035f89fc4ec4a67f49a18c35cb6715","status":"affected","versionType":"git"},{"version":"075b4e6a982d38121250c090f7b9294314ac1b19","status":"affected","versionType":"git"},{"version":"436e52f1a628233f080605dd736594df250897ca","status":"affected","versionType":"git"},{"version":"1c8d316294916da7e2a2f1f178ca3f3bd6d7b531","status":"affected","versionType":"git"},{"version":"927c3fa44e24300eb827ab9f9dacce6dff9c9bb7","status":"affected","versionType":"git"},{"version":"2.6.32.30","status":"affected","lessThan":"2.6.33","versionType":"semver"},{"version":"2.6.33.8","status":"affected","lessThan":"2.6.34","versionType":"semver"},{"version":"2.6.34.10","status":"affected","lessThan":"2.6.35","versionType":"semver"},{"version":"2.6.35.12","status":"affected","lessThan":"2.6.36","versionType":"semver"},{"version":"2.6.37.3","status":"affected","lessThan":"2.6.38","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/usbip/vhci_hcd.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"2.6.38","status":"affected"},{"version":"0","status":"unaffected","lessThan":"2.6.38","versionType":"semver"},{"version":"4.19.320","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4.282","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.224","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.165","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.105","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.46","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.10.5","status":"unaffected","lessThanOrEqual":"6.10.*","versionType":"semver"},{"version":"6.11","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/usbip/vhci_hcd.c"]}],"references":["https://git.kernel.org/stable/c/5a3c473b28ae1c1f7c4dc129e30cb19ae6e96f89","https://git.kernel.org/stable/c/9c3746ce8d8fcb3a2405644fc0eec7fc5312de80","https://git.kernel.org/stable/c/4dacdb9720aaab10b6be121eae55820174d97174","https://git.kernel.org/stable/c/e8c1e606dab8c56cf074b43b98d0805de7322ba2","https://git.kernel.org/stable/c/585e6bc7d0a9bf73a8be3d3fb34e86b90cc61a14","https://git.kernel.org/stable/c/128e82e41cf7d74a562726c1587d9d2ede1a0a37","https://git.kernel.org/stable/c/c3d0857b7fc2c49f68f89128a5440176089a8f54","https://git.kernel.org/stable/c/afdcfd3d6fcdeca2735ca8d994c5f2d24a368f0a","https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html","https://lists.debian.org/debian-lts-announce/2024/10/msg00003.html"],"weaknesses":[],"ingestedAt":"2026-10-29T20:07:47.831Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2024/43xxx/CVE-2024-43883.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-43883","state":"PUBLISHED","datePublished":"2024-08-23T13:08:10.508Z","dateUpdated":"2026-08-05T11:36:58.793Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2024-08-17T09:11:59.287Z"},"containers":{"cna":{"title":"usb: vhci-hcd: Do not drop references before new references are gained","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nusb: vhci-hcd: Do not drop references before new references are gained\n\nAt a few places the driver carries stale pointers\nto references that can still be used. Make sure that does not happen.\nThis strictly speaking closes ZDI-CAN-22273, though there may be\nsimilar races in the driver."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"5a3c473b28ae1c1f7c4dc129e30cb19ae6e96f89","versionType":"git"},{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"9c3746ce8d8fcb3a2405644fc0eec7fc5312de80","versionType":"git"},{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"4dacdb9720aaab10b6be121eae55820174d97174","versionType":"git"},{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"e8c1e606dab8c56cf074b43b98d0805de7322ba2","versionType":"git"},{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"585e6bc7d0a9bf73a8be3d3fb34e86b90cc61a14","versionType":"git"},{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"128e82e41cf7d74a562726c1587d9d2ede1a0a37","versionType":"git"},{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"c3d0857b7fc2c49f68f89128a5440176089a8f54","versionType":"git"},{"version":"7606ee8aa33287dd3e6eb44c78541b87a413a325","status":"affected","lessThan":"afdcfd3d6fcdeca2735ca8d994c5f2d24a368f0a","versionType":"git"},{"version":"96ea4801d2035f89fc4ec4a67f49a18c35cb6715","status":"affected","versionType":"git"},{"version":"075b4e6a982d38121250c090f7b9294314ac1b19","status":"affected","versionType":"git"},{"version":"436e52f1a628233f080605dd736594df250897ca","status":"affected","versionType":"git"},{"version":"1c8d316294916da7e2a2f1f178ca3f3bd6d7b531","status":"affected","versionType":"git"},{"version":"927c3fa44e24300eb827ab9f9dacce6dff9c9bb7","status":"affected","versionType":"git"},{"version":"2.6.32.30","status":"affected","lessThan":"2.6.33","versionType":"semver"},{"version":"2.6.33.8","status":"affected","lessThan":"2.6.34","versionType":"semver"},{"version":"2.6.34.10","status":"affected","lessThan":"2.6.35","versionType":"semver"},{"version":"2.6.35.12","status":"affected","lessThan":"2.6.36","versionType":"semver"},{"version":"2.6.37.3","status":"affected","lessThan":"2.6.38","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/usbip/vhci_hcd.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"2.6.38","status":"affected"},{"version":"0","status":"unaffected","lessThan":"2.6.38","versionType":"semver"},{"version":"4.19.320","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4.282","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.224","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.165","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.105","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.46","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.10.5","status":"unaffected","lessThanOrEqual":"6.10.*","versionType":"semver"},{"version":"6.11","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/usbip/vhci_hcd.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/5a3c473b28ae1c1f7c4dc129e30cb19ae6e96f89"},{"url":"https://git.kernel.org/stable/c/9c3746ce8d8fcb3a2405644fc0eec7fc5312de80"},{"url":"https://git.kernel.org/stable/c/4dacdb9720aaab10b6be121eae55820174d97174"},{"url":"https://git.kernel.org/stable/c/e8c1e606dab8c56cf074b43b98d0805de7322ba2"},{"url":"https://git.kernel.org/stable/c/585e6bc7d0a9bf73a8be3d3fb34e86b90cc61a14"},{"url":"https://git.kernel.org/stable/c/128e82e41cf7d74a562726c1587d9d2ede1a0a37"},{"url":"https://git.kernel.org/stable/c/c3d0857b7fc2c49f68f89128a5440176089a8f54"},{"url":"https://git.kernel.org/stable/c/afdcfd3d6fcdeca2735ca8d994c5f2d24a368f0a"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":9.8,"baseSeverity":"CRITICAL"},"scenarios":[{"lang":"en","value":"AV:N - vhci-hcd is a virtual host controller whose transport is an unauthenticated TCP socket, not a physical port; `vhci_rx_pdu()` processes attacker-supplied PDUs from the remote USB/IP peer and converts a malformed command or short read directly into `VDEV_EVENT_ERROR_TCP` → `vhci_device_reset()`, the vulnerable put path. A malicious or compromised USB/IP server (or an on-path attacker, since USB/IP has no integrity protection) drives the bug entirely over the network.\nAC:L - The attacker controls both sides of the race — it forces unlimited re-enumerations by failing URBs (usb-storage error recovery and hub retry loops re-issue SET_ADDRESS/GET_DESCRIPTOR to devnum 0) and fires the reset event on demand with a single bad PDU byte. It also observes the GET_DESCRIPTOR-to-device-0 CMD_SUBMIT on the wire, so it knows precisely when the put/assign window opens, and can retry indefinitely.\nPR:N - The USB/IP client performs no authentication on received PDUs — `vhci_rx_loop()` just reads and dispatches whatever the peer sends, so the remote attacker needs no credentials on the target. Even in the local framing, `USBDEVFS_RESET` is gated only on `FMODE_WRITE` of the usbfs node with no capability check.\nUI:N - In the targeted deployments (thin clients, VDI USB redirection, device farms, industrial gateways) the attachment is established automatically by a service, and the attacker triggers both re-enumeration and the reset event itself during normal operation. No victim action is required at attack time.\nS:U - The use-after-free corrupts kernel heap memory within the same kernel security authority; there is no crossing of a VM, IOMMU, or sandbox boundary.\nC:H - The double `usb_put_dev()` frees a live `struct usb_device` while `vdev->udev` and in-flight URBs still reference it, and the remote controls RET_SUBMIT buffer contents/sizes for reliable slab reclaim, yielding an arbitrary read primitive. `port_show_vhci()` additionally prints `dev_name()` from the freed object into `/sys/devices/platform/vhci_hcd.0/status`, directly leaking reclaimed heap content.\nI:H - After the premature free, `usb_get_dev()` performs a refcount increment into freed memory (a write at a controlled offset), and subsequent dereferences of `udev->dev.driver`, `udev->bus`, and the kobject release path give function-pointer control. This is a classic UAF exploitable for heap corruption and control-flow hijack to kernel code execution.\nA:H - The reference-count underflow and stale-pointer dereference produce refcount_t warnings, oopses, and panics, and `vdev->udev` can also be observed as NULL/freed by concurrent readers. The remote peer can trigger this repeatedly, making a reliable kernel crash trivial."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T11:36:58.793Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.38","versionEndExcluding":"4.19.320"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.38","versionEndExcluding":"5.4.282"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.38","versionEndExcluding":"5.10.224"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.38","versionEndExcluding":"5.15.165"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.38","versionEndExcluding":"6.1.105"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.38","versionEndExcluding":"6.6.46"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.38","versionEndExcluding":"6.10.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.38","versionEndExcluding":"6.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.32.30"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.33.8"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.34.10"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.35.12"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.37.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2024-43883","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2024-09-10T15:32:14.861945Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2024-09-12T17:33:09.242Z"}},{"title":"CVE Program Container","references":[{"url":"https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"},{"url":"https://lists.debian.org/debian-lts-announce/2024/10/msg00003.html"}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2025-11-03T22:06:39.422Z"}}]}}}