{"dataType":"CVE_RECORD","cveMetadata":{"cveId":"CVE-2024-26659","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-02-19T14:20:24.147Z","datePublished":"2024-04-02T06:22:09.241Z","dateUpdated":"2026-08-05T11:26:35.521Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:26:35.521Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nxhci: handle isoc Babble and Buffer Overrun events properly\n\nxHCI 4.9 explicitly forbids assuming that the xHC has released its\nownership of a multi-TRB TD when it reports an error on one of the\nearly TRBs. Yet the driver makes such assumption and releases the TD,\nallowing the remaining TRBs to be freed or overwritten by new TDs.\n\nThe xHC should also report completion of the final TRB due to its IOC\nflag being set by us, regardless of prior errors. This event cannot\nbe recognized if the TD has already been freed earlier, resulting in\n\"Transfer event TRB DMA ptr not part of current TD\" error message.\n\nFix this by reusing the logic for processing isoc Transaction Errors.\nThis also handles hosts which fail to report the final completion.\n\nFix transfer length reporting on Babble errors. They may be caused by\ndevice malfunction, no guarantee that the buffer has been filled."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The buggy handler is reached by driving isochronous USB traffic from a local process — ALSA USB-audio, uvcvideo/V4L2, or raw usbfs `USBDEVFS_SUBMITURB` — on an already-attached device, with no physical access required. Consistent with the in-tree scoring of the analogous xhci isoc ring bugs (CVE-2025-37882, CVE-2025-22022).\nAC:L - `usb_submit_urb()` only bounds isoc frame lengths from above, so short isoc IN frames reliably provoke Isoch Buffer Overrun, and multi-TRB isoc TDs are the normal case for high-bandwidth SuperSpeed streams; the condition can be re-triggered every service interval. A malicious attached device can force babble deterministically.\nPR:L - Requires only an unprivileged local account with access to an isochronous USB endpoint (video/audio group membership or console-seat uaccess ACLs on /dev/bus/usb, /dev/video*, /dev/snd/*). No root or CAP_SYS_ADMIN is needed.\nUI:N - Once an isochronous-capable device is present, the attacker submits the URBs themselves; no victim action is required to trigger the premature TD giveback.\nS:U - The corruption and its impact are confined to the kernel's own memory and the xHCI host controller driver — the same security authority. No VM, IOMMU, or sandbox boundary is crossed.\nC:H - The TD is released while the xHC still owns its remaining TRBs, so the controller keeps DMAing into a buffer that was given back and may be reallocated to another subsystem; that reallocated content is then reported back through the URB, and stale TRBs let the HC read reused memory — an arbitrary kernel-memory disclosure primitive.\nI:H - This is a use-after-free write: the xHC DMAs device-supplied data into freed/reallocated kernel memory, and freed TRB slots overwritten by new TDs let the controller act on torn TRBs with mismatched addresses and lengths, giving a corruption primitive leveragable for control-flow hijack.\nA:H - The missing final-TRB event produces \"Transfer event TRB DMA ptr not part of current TD\" and `-ESHUTDOWN`, desynchronizing driver and hardware and reaching `xhci_hc_died()`/`usb_hc_died()`, which kills every URB and all devices on the controller; the DMA-into-freed-memory and IOMMU-fault paths additionally cause kernel crashes."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/host/xhci-ring.c"],"versions":[{"version":"04e51901dd44f40a5a385ced897f6bca87d5f40a","lessThan":"696e4112e5c1ee61996198f0ebb6ca3fab55166e","status":"affected","versionType":"git"},{"version":"04e51901dd44f40a5a385ced897f6bca87d5f40a","lessThan":"2aa7bcfdbb46241c701811bbc0d64d7884e3346c","status":"affected","versionType":"git"},{"version":"04e51901dd44f40a5a385ced897f6bca87d5f40a","lessThan":"2e3ec80ea7ba58bbb210e83b5a0afefee7c171d3","status":"affected","versionType":"git"},{"version":"04e51901dd44f40a5a385ced897f6bca87d5f40a","lessThan":"f5e7ffa9269a448a720e21f1ed1384d118298c97","status":"affected","versionType":"git"},{"version":"04e51901dd44f40a5a385ced897f6bca87d5f40a","lessThan":"418456c0ce56209610523f21734c5612ee634134","status":"affected","versionType":"git"},{"version":"04e51901dd44f40a5a385ced897f6bca87d5f40a","lessThan":"7c4650ded49e5b88929ecbbb631efb8b0838e811","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/host/xhci-ring.c"],"versions":[{"version":"2.6.36","status":"affected"},{"version":"0","lessThan":"2.6.36","status":"unaffected","versionType":"semver"},{"version":"5.10.213","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.15.152","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.82","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.17","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.7.5","lessThanOrEqual":"6.7.*","status":"unaffected","versionType":"semver"},{"version":"6.8","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.36","versionEndExcluding":"5.10.213"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.36","versionEndExcluding":"5.15.152"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.36","versionEndExcluding":"6.1.82"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.36","versionEndExcluding":"6.6.17"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.36","versionEndExcluding":"6.7.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.36","versionEndExcluding":"6.8"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/696e4112e5c1ee61996198f0ebb6ca3fab55166e"},{"url":"https://git.kernel.org/stable/c/2aa7bcfdbb46241c701811bbc0d64d7884e3346c"},{"url":"https://git.kernel.org/stable/c/2e3ec80ea7ba58bbb210e83b5a0afefee7c171d3"},{"url":"https://git.kernel.org/stable/c/f5e7ffa9269a448a720e21f1ed1384d118298c97"},{"url":"https://git.kernel.org/stable/c/418456c0ce56209610523f21734c5612ee634134"},{"url":"https://git.kernel.org/stable/c/7c4650ded49e5b88929ecbbb631efb8b0838e811"}],"title":"xhci: handle isoc Babble and Buffer Overrun events properly","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2024-06-17T19:31:25.014647Z","id":"CVE-2024-26659","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2024-06-17T19:31:33.585Z"}},{"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2024-08-02T00:14:12.454Z"},"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/696e4112e5c1ee61996198f0ebb6ca3fab55166e","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/2aa7bcfdbb46241c701811bbc0d64d7884e3346c","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/2e3ec80ea7ba58bbb210e83b5a0afefee7c171d3","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/f5e7ffa9269a448a720e21f1ed1384d118298c97","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/418456c0ce56209610523f21734c5612ee634134","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/7c4650ded49e5b88929ecbbb631efb8b0838e811","tags":["x_transferred"]},{"url":"https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html","tags":["x_transferred"]}]},{"x_adpType":"supplier","providerMetadata":{"orgId":"0b142b55-0307-4c5a-b3c9-f314f3fb7c5e","shortName":"siemens-SADP","dateUpdated":"2026-05-12T11:49:25.643Z"},"affected":[{"vendor":"Siemens","product":"SIMATIC S7-1500 TM MFP - GNU/Linux subsystem","versions":[{"status":"affected","version":"0","lessThan":"*","versionType":"custom"}],"defaultStatus":"unknown"}],"references":[{"url":"https://cert-portal.siemens.com/productcert/html/ssa-265688.html"}]}]},"dataVersion":"5.2"}