{"id":"CVE-2026-90010","state":"PUBLISHED","title":"scsi: bsg: Cap io_uring sense copy to max_response_len","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: bsg: Cap io_uring sense copy to max_response_len\n\nCompletion copied scmd->sense_len to the user response buffer without\nhonoring max_response_len. After a valid sense, the midlayer sets\nsense_len to the real length (up to SCSI_SENSE_BUFFERSIZE), so a smaller\nuser buffer was overrun.","publishedAt":"2026-09-16T10:33:18.118Z","updatedAt":"2026-10-19T08:56:24.094Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/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":"7b6d3255e7f8c6df2d21504c47808e3ce84649ac","status":"affected","lessThan":"5d326efc334ea21afd8161f6ca53e17de71948a9","versionType":"git"},{"version":"7b6d3255e7f8c6df2d21504c47808e3ce84649ac","status":"affected","lessThan":"ece06de726737e887dc0225c8283477624f8ae21","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/scsi/scsi_bsg.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"7.1","status":"affected"},{"version":"0","status":"unaffected","lessThan":"7.1","versionType":"semver"},{"version":"7.2.5","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/scsi/scsi_bsg.c"]}],"references":["https://git.kernel.org/stable/c/5d326efc334ea21afd8161f6ca53e17de71948a9","https://git.kernel.org/stable/c/ece06de726737e887dc0225c8283477624f8ae21"],"weaknesses":[],"ingestedAt":"2026-10-29T20:13:34.582Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/90xxx/CVE-2026-90010.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-90010","state":"PUBLISHED","datePublished":"2026-09-16T10:33:18.118Z","dateUpdated":"2026-10-19T08:56:24.094Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-09-11T19:38:34.781Z"},"containers":{"cna":{"title":"scsi: bsg: Cap io_uring sense copy to max_response_len","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: bsg: Cap io_uring sense copy to max_response_len\n\nCompletion copied scmd->sense_len to the user response buffer without\nhonoring max_response_len. After a valid sense, the midlayer sets\nsense_len to the real length (up to SCSI_SENSE_BUFFERSIZE), so a smaller\nuser buffer was overrun."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"7b6d3255e7f8c6df2d21504c47808e3ce84649ac","status":"affected","lessThan":"5d326efc334ea21afd8161f6ca53e17de71948a9","versionType":"git"},{"version":"7b6d3255e7f8c6df2d21504c47808e3ce84649ac","status":"affected","lessThan":"ece06de726737e887dc0225c8283477624f8ae21","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/scsi/scsi_bsg.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"7.1","status":"affected"},{"version":"0","status":"unaffected","lessThan":"7.1","versionType":"semver"},{"version":"7.2.5","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/scsi/scsi_bsg.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/5d326efc334ea21afd8161f6ca53e17de71948a9"},{"url":"https://git.kernel.org/stable/c/ece06de726737e887dc0225c8283477624f8ae21"}],"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 - Reached only via IORING_OP_URING_CMD on a local /dev/bsg character device (bsg_fops.uring_cmd → bsg_uring_cmd → scsi_bsg_uring_cmd → scsi_bsg_uring_task_cb); per CNA guidance io_uring is Local, and no network or adjacent-radio path feeds SCSI sense completion.\nAC:L - The attacker controls the CDB, response pointer, and claimed max_response_len, and can reliably force CHECK CONDITION with an illegal-field or out-of-range READ/INQUIRY/TEST_UNIT_READY so the midlayer sets sense_len up to SCSI_SENSE_BUFFERSIZE (96) and the uncapped copy_to_user runs with no race.\nPR:L - bsg_open() has no capable() check and scsi_cmd_allowed() permits unprivileged read-class CDBs (INQUIRY, READ_*, TEST_UNIT_READY) without CAP_SYS_RAWIO; /dev/bsg nodes are routinely granted to disk/cdrom group members and uaccess-seated users on desktops, Android, and shared workstations.\nUI:N - The attacker opens /dev/bsg and submits the io_uring command from their own process; no separate victim action such as mounting a filesystem or attaching hardware is required.\nS:U - copy_to_user() writes past the caller-supplied userspace sense buffer in the submitting process and does not by itself corrupt kernel slab independently of that process or cross a VM, IOMMU, or sandbox boundary.\nC:H - Completion ignores max_response_len and copies up to 96 bytes of sense into adjacent userspace, a heap/stack overflow that can be turned into an arbitrary-read primitive against a privileged bsg/io_uring consumer rather than a bounded disclosure of intended sense data.\nI:H - scsi_bsg_uring_task_cb uses min(sense_len, SCSI_SENSE_BUFFERSIZE) instead of max_response_len, so a small user buffer is overrun by up to 96 bytes of sense, enabling adjacent heap/stack corruption and potential control-flow hijacking.\nA:H - The out-of-bounds write can crash the calling process or a storage-management consumer using a traditional 18/32-byte sense buffer, and CHECK CONDITION commands can be repeated to induce process termination."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-19T08:56:24.094Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"7.1","versionEndExcluding":"7.2.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"7.1","versionEndExcluding":"7.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}