CVE-2021-47290

In the Linux kernel, the following vulnerability has been resolved: scsi: target: Fix NULL dereference on XCOPY completion CPU affinity control added with commit 39ae3edda325 ("scsi: target: core: Make completion affinity configurable") makes target_complete_cmd() queue work on a CPU based on se_tpg->se_tpg_wwn->cmd_compl_affinity state. LIO's EXTENDED COPY worker is a special case in that read/write cmds are dispatched using the global xcopy_pt_tpg, which carries a NULL se_tpg_wwn pointer following initialization in target_xcopy_setup_pt(). The NULL xcopy_pt_tpg->se_tpg_wwn pointer is dereferenced on completion of any EXTENDED COPY initiated read/write cmds. E.g using the libiscsi SCSI.ExtendedCopy.Simple test: BUG: kernel NULL pointer dereference, address: 00000000000001a8 RIP: 0010:target_complete_cmd+0x9d/0x130 [target_core_mod] Call Trace: fd_execute_rw+0x148/0x42a [target_core_file] ? __dynamic_pr_debug+0xa7/0xe0 ? target_check_reservation+0x5b/0x940 [target_core_mod] __target_execute_cmd+0x1e/0x90 [target_core_mod] transport_generic_new_cmd+0x17c/0x330 [target_core_mod] target_xcopy_issue_pt_cmd+0x9/0x60 [target_core_mod] target_xcopy_read_source.isra.7+0x10b/0x1b0 [target_core_mod] ? target_check_fua+0x40/0x40 [target_core_mod] ? transport_complete_task_attr+0x130/0x130 [target_core_mod] target_xcopy_do_work+0x61f/0xc00 [target_core_mod] This fix makes target_complete_cmd() queue work on se_cmd->cpuid if se_tpg_wwn is NULL.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.14:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.14:rc2:*:*:*:*:*:*

History

23 Dec 2024, 16:47

Type Values Removed Values Added
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
CPE cpe:2.3:o:linux:linux_kernel:5.14:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:5.14:rc1:*:*:*:*:*:*
CWE CWE-476
First Time Linux linux Kernel
Linux
References () https://git.kernel.org/stable/c/a47fa41381a09e5997afd762664db4f5f6657e03 - () https://git.kernel.org/stable/c/a47fa41381a09e5997afd762664db4f5f6657e03 - Patch
References () https://git.kernel.org/stable/c/e7732c5a19a15a62b0b23fd683a639b0483e1f40 - () https://git.kernel.org/stable/c/e7732c5a19a15a62b0b23fd683a639b0483e1f40 - Patch

21 Nov 2024, 06:35

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/a47fa41381a09e5997afd762664db4f5f6657e03 - () https://git.kernel.org/stable/c/a47fa41381a09e5997afd762664db4f5f6657e03 -
References () https://git.kernel.org/stable/c/e7732c5a19a15a62b0b23fd683a639b0483e1f40 - () https://git.kernel.org/stable/c/e7732c5a19a15a62b0b23fd683a639b0483e1f40 -
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: scsi: target: corrige la desreferencia NULL al completar XCOPY. El control de afinidad de CPU agregado con la confirmación 39ae3edda325 ("scsi: target: core: hace que la afinidad de finalización sea configurable") hace que la cola target_complete_cmd() funcione una CPU basada en el estado se_tpg->se_tpg_wwn->cmd_compl_affinity. El trabajador de COPIA EXTENDIDA de LIO es un caso especial en el que los cmds de lectura/escritura se envían utilizando el xcopy_pt_tpg global, que lleva un puntero NULL se_tpg_wwn después de la inicialización en target_xcopy_setup_pt(). Se elimina la referencia al puntero NULL xcopy_pt_tpg->se_tpg_wwn al finalizar cualquier cmd de lectura/escritura iniciado por COPIA EXTENDIDA. Por ejemplo, utilizando la prueba libiscsi SCSI.ExtendedCopy.Simple: BUG: desreferencia del puntero NULL del kernel, dirección: 00000000000001a8 RIP: 0010:target_complete_cmd+0x9d/0x130 [target_core_mod] Seguimiento de llamadas: fd_execute_rw+0x148/0x42a [target_core_file] __dynamic_pr_debug+0xa7/0xe0? target_check_reservation+0x5b/0x940 [target_core_mod] __target_execute_cmd+0x1e/0x90 [target_core_mod] transport_generic_new_cmd+0x17c/0x330 [target_core_mod] target_xcopy_issue_pt_cmd+0x9/0x60 [target_core_mod] target_xcopy_read_source.isra.7 +0x10b/0x1b0 [target_core_mod] ? target_check_fua+0x40/0x40 [target_core_mod]? transport_complete_task_attr+0x130/0x130 [target_core_mod] target_xcopy_do_work+0x61f/0xc00 [target_core_mod] Esta solución hace que la cola target_complete_cmd() funcione en se_cmd->cpuid si se_tpg_wwn es NULL.

21 May 2024, 15:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-05-21 15:15

Updated : 2024-12-23 16:47


NVD link : CVE-2021-47290

Mitre link : CVE-2021-47290

CVE.ORG link : CVE-2021-47290


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-476

NULL Pointer Dereference