CVE-2021-47182
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
10/04/2024
Last modified:
21/03/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
scsi: core: Fix scsi_mode_sense() buffer length handling<br />
<br />
Several problems exist with scsi_mode_sense() buffer length handling:<br />
<br />
1) The allocation length field of the MODE SENSE(10) command is 16-bits,<br />
occupying bytes 7 and 8 of the CDB. With this command, access to mode<br />
pages larger than 255 bytes is thus possible. However, the CDB<br />
allocation length field is set by assigning len to byte 8 only, thus<br />
truncating buffer length larger than 255.<br />
<br />
2) If scsi_mode_sense() is called with len smaller than 8 with<br />
sdev->use_10_for_ms set, or smaller than 4 otherwise, the buffer length<br />
is increased to 8 and 4 respectively, and the buffer is zero filled<br />
with these increased values, thus corrupting the memory following the<br />
buffer.<br />
<br />
Fix these 2 problems by using put_unaligned_be16() to set the allocation<br />
length field of MODE SENSE(10) CDB and by returning an error when len is<br />
too small.<br />
<br />
Furthermore, if len is larger than 255B, always try MODE SENSE(10) first,<br />
even if the device driver did not set sdev->use_10_for_ms. In case of<br />
invalid opcode error for MODE SENSE(10), access to mode pages larger than<br />
255 bytes are not retried using MODE SENSE(6). To avoid buffer length<br />
overflows for the MODE_SENSE(10) case, check that len is smaller than 65535<br />
bytes.<br />
<br />
While at it, also fix the folowing:<br />
<br />
* Use get_unaligned_be16() to retrieve the mode data length and block<br />
descriptor length fields of the mode sense reply header instead of using<br />
an open coded calculation.<br />
<br />
* Fix the kdoc dbd argument explanation: the DBD bit stands for Disable<br />
Block Descriptor, which is the opposite of what the dbd argument<br />
description was.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.15.5 (excluding) |
To consult the complete list of CPE names with products and versions, see this page



