In the Linux kernel, the following vulnerability has been resolved:
scsi: core: Fix scsi_mode_sense() buffer length handling
Several problems exist with scsi_mode_sense() buffer length handling:
1) The allocation length field of the MODE SENSE(10) command is 16-bits,
occupying bytes 7 and 8 of the CDB. With this command, access to mode
pages larger than 255 bytes is thus possible. However, the CDB
allocation length field is set by assigning len to byte 8 only, thus
truncating buffer length larger than 255.
2) If scsi_mode_sense() is called with len smaller than 8 with
sdev->use_10_for_ms set, or smaller than 4 otherwise, the buffer length
is increased to 8 and 4 respectively, and the buffer is zero filled
with these increased values, thus corrupting the memory following the
buffer.
Fix these 2 problems by using put_unaligned_be16() to set the allocation
length field of MODE SENSE(10) CDB and by returning an error when len is
too small.
Furthermore, if len is larger than 255B, always try MODE SENSE(10) first,
even if the device driver did not set sdev->use_10_for_ms. In case of
invalid opcode error for MODE SENSE(10), access to mode pages larger than
255 bytes are not retried using MODE SENSE(6). To avoid buffer length
overflows for the MODE_SENSE(10) case, check that len is smaller than 65535
bytes.
While at it, also fix the folowing:
* Use get_unaligned_be16() to retrieve the mode data length and block
descriptor length fields of the mode sense reply header instead of using
an open coded calculation.
* Fix the kdoc dbd argument explanation: the DBD bit stands for Disable
Block Descriptor, which is the opposite of what the dbd argument
description was.
References
Configurations
History
21 Mar 2025, 11:54
Type | Values Removed | Values Added |
---|---|---|
CVSS |
v2 : v3 : |
v2 : unknown
v3 : 5.5 |
First Time |
Linux linux Kernel
Linux |
|
CWE | CWE-770 | |
References | () https://git.kernel.org/stable/c/17b49bcbf8351d3dbe57204468ac34f033ed60bc - Patch | |
References | () https://git.kernel.org/stable/c/e15de347faf4a9f494cbd4e9a623d343dc1b5851 - Patch | |
CPE | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
21 Nov 2024, 06:35
Type | Values Removed | Values Added |
---|---|---|
Summary |
|
|
References | () https://git.kernel.org/stable/c/17b49bcbf8351d3dbe57204468ac34f033ed60bc - | |
References | () https://git.kernel.org/stable/c/e15de347faf4a9f494cbd4e9a623d343dc1b5851 - |
10 Apr 2024, 19:49
Type | Values Removed | Values Added |
---|---|---|
New CVE |
Information
Published : 2024-04-10 19:15
Updated : 2025-03-21 11:54
NVD link : CVE-2021-47182
Mitre link : CVE-2021-47182
CVE.ORG link : CVE-2021-47182
JSON object : View
Products Affected
linux
- linux_kernel
CWE
CWE-770
Allocation of Resources Without Limits or Throttling