{"id":"CVE-2026-63904","state":"PUBLISHED","title":"usb: usbtmc: check URB actual_length for interrupt-IN notifications","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nusb: usbtmc: check URB actual_length for interrupt-IN notifications\n\nUSBTMC devices can use an optional interrupt endpoint for notification\nmessages. These typically contain two-byte headers indicating the\npayload format, but the driver does not check if these headers are\npresent before accessing the data buffers. In cases where the URB\nactual_length is not enough to fit these headers, the driver will either\ncause an out-of-bounds read, or consume stale leftover data from a\nprevious notification.\n\nFix by checking if actual_data contains enough bytes for the headers,\notherwise resubmit URB to the interrupt endpoint.","publishedAt":"2026-07-19T14:55:11.547Z","updatedAt":"2026-07-19T14:55:11.547Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"e794bd67b3faf98af46f958897f6b91412c7d2a9","versionType":"git"},{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"e3eec3005de44e7f37d8d7724be636446516ab42","versionType":"git"},{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"ae87f505917e703ae3b487d9663d78826ff43608","versionType":"git"},{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"5de7df75ef3a2756b25fe3d582a4a2970444fe5a","versionType":"git"},{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"69020fa089f1bf0e1a10a15265f31b143a846409","versionType":"git"},{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"75f6d3da2cc646983f41807ef98851569c12bca9","versionType":"git"},{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"f141b01eaa58ac7e323931d670318aa247bff087","versionType":"git"},{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"52f2ad3f7e5eb3b5908e1d685d4342519dc9cfcd","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/class/usbtmc.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.6","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.6","versionType":"semver"},{"version":"5.10.259","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.210","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.176","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.143","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.93","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.35","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.0.12","status":"unaffected","lessThanOrEqual":"7.0.*","versionType":"semver"},{"version":"7.1","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/class/usbtmc.c"]}],"references":["https://git.kernel.org/stable/c/e794bd67b3faf98af46f958897f6b91412c7d2a9","https://git.kernel.org/stable/c/e3eec3005de44e7f37d8d7724be636446516ab42","https://git.kernel.org/stable/c/ae87f505917e703ae3b487d9663d78826ff43608","https://git.kernel.org/stable/c/5de7df75ef3a2756b25fe3d582a4a2970444fe5a","https://git.kernel.org/stable/c/69020fa089f1bf0e1a10a15265f31b143a846409","https://git.kernel.org/stable/c/75f6d3da2cc646983f41807ef98851569c12bca9","https://git.kernel.org/stable/c/f141b01eaa58ac7e323931d670318aa247bff087","https://git.kernel.org/stable/c/52f2ad3f7e5eb3b5908e1d685d4342519dc9cfcd"],"weaknesses":[],"ingestedAt":"2026-10-29T20:12:41.951Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/63xxx/CVE-2026-63904.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-63904","state":"PUBLISHED","datePublished":"2026-07-19T14:55:11.547Z","dateUpdated":"2026-07-19T14:55:11.547Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-07-19T07:54:57.019Z"},"containers":{"cna":{"title":"usb: usbtmc: check URB actual_length for interrupt-IN notifications","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nusb: usbtmc: check URB actual_length for interrupt-IN notifications\n\nUSBTMC devices can use an optional interrupt endpoint for notification\nmessages. These typically contain two-byte headers indicating the\npayload format, but the driver does not check if these headers are\npresent before accessing the data buffers. In cases where the URB\nactual_length is not enough to fit these headers, the driver will either\ncause an out-of-bounds read, or consume stale leftover data from a\nprevious notification.\n\nFix by checking if actual_data contains enough bytes for the headers,\notherwise resubmit URB to the interrupt endpoint."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"e794bd67b3faf98af46f958897f6b91412c7d2a9","versionType":"git"},{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"e3eec3005de44e7f37d8d7724be636446516ab42","versionType":"git"},{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"ae87f505917e703ae3b487d9663d78826ff43608","versionType":"git"},{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"5de7df75ef3a2756b25fe3d582a4a2970444fe5a","versionType":"git"},{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"69020fa089f1bf0e1a10a15265f31b143a846409","versionType":"git"},{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"75f6d3da2cc646983f41807ef98851569c12bca9","versionType":"git"},{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"f141b01eaa58ac7e323931d670318aa247bff087","versionType":"git"},{"version":"dbf3e7f654c0f06a932b8fcafac78de9d0b81d68","status":"affected","lessThan":"52f2ad3f7e5eb3b5908e1d685d4342519dc9cfcd","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/class/usbtmc.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.6","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.6","versionType":"semver"},{"version":"5.10.259","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.210","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.176","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.143","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.93","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.35","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.0.12","status":"unaffected","lessThanOrEqual":"7.0.*","versionType":"semver"},{"version":"7.1","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/class/usbtmc.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/e794bd67b3faf98af46f958897f6b91412c7d2a9"},{"url":"https://git.kernel.org/stable/c/e3eec3005de44e7f37d8d7724be636446516ab42"},{"url":"https://git.kernel.org/stable/c/ae87f505917e703ae3b487d9663d78826ff43608"},{"url":"https://git.kernel.org/stable/c/5de7df75ef3a2756b25fe3d582a4a2970444fe5a"},{"url":"https://git.kernel.org/stable/c/69020fa089f1bf0e1a10a15265f31b143a846409"},{"url":"https://git.kernel.org/stable/c/75f6d3da2cc646983f41807ef98851569c12bca9"},{"url":"https://git.kernel.org/stable/c/f141b01eaa58ac7e323931d670318aa247bff087"},{"url":"https://git.kernel.org/stable/c/52f2ad3f7e5eb3b5908e1d685d4342519dc9cfcd"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-07-19T14:55:11.547Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"5.10.259"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"5.15.210"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"6.1.176"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"6.6.143"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"6.12.93"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"6.18.35"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"7.0.12"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"7.1"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}