Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en kernel de Linux (CVE-2021-47182)

Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
10/04/2024
Última modificación:
21/03/2025

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: scsi: core: Fix scsi_mode_sense() buffer length management Existen varios problemas con el manejo de la longitud del búfer de scsi_mode_sense(): 1) El campo de longitud de asignación del comando MODE SENSE(10) es de 16 bits y ocupa los bytes 7 y 8 del CDB. Con este comando, es posible acceder a páginas de modo mayores de 255 bytes. Sin embargo, el campo de longitud de asignación del CDB se establece asignando len solo al byte 8, truncando así la longitud del búfer mayor de 255. 2) Si se llama a scsi_mode_sense() con len menor que 8 con sdev->use_10_for_ms establecido, o menor que 4 en caso contrario, la longitud del búfer aumenta a 8 y 4 respectivamente, y el búfer se rellena con ceros con estos valores aumentados, corrompiendo así la memoria que sigue al búfer. Solucione estos 2 problemas usando put_unaligned_be16() para configurar el campo de longitud de asignación de MODE SENSE(10) CDB y devolviendo un error cuando len sea demasiado pequeño. Además, si len es mayor que 255B, siempre intente MODE SENSE(10) primero, incluso si el controlador del dispositivo no configuró sdev->use_10_for_ms. En caso de error de código de operación no válido para MODE SENSE(10), el acceso a páginas de modo mayores a 255 bytes no se vuelve a intentar usando MODE SENSE(6). Para evitar desbordamientos de longitud de búfer para el caso de MODE_SENSE(10), verifique que len sea menor a 65535 bytes. Mientras lo hace, también solucione lo siguiente: * Use get_unaligned_be16() para recuperar los campos de longitud de datos de modo y longitud de descriptor de bloque del encabezado de respuesta de sentido de modo en lugar de usar un cálculo de código abierto. * Corregir la explicación del argumento dbd de kdoc: el bit DBD significa Deshabilitar descriptor de bloque, que es lo opuesto a lo que era la descripción del argumento dbd.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.15.5 (excluyendo)