CVE-2024-42152

In the Linux kernel, the following vulnerability has been resolved: nvmet: fix a possible leak when destroy a ctrl during qp establishment In nvmet_sq_destroy we capture sq->ctrl early and if it is non-NULL we know that a ctrl was allocated (in the admin connect request handler) and we need to release pending AERs, clear ctrl->sqs and sq->ctrl (for nvme-loop primarily), and drop the final reference on the ctrl. However, a small window is possible where nvmet_sq_destroy starts (as a result of the client giving up and disconnecting) concurrently with the nvme admin connect cmd (which may be in an early stage). But *before* kill_and_confirm of sq->ref (i.e. the admin connect managed to get an sq live reference). In this case, sq->ctrl was allocated however after it was captured in a local variable in nvmet_sq_destroy. This prevented the final reference drop on the ctrl. Solve this by re-capturing the sq->ctrl after all inflight request has completed, where for sure sq->ctrl reference is final, and move forward based on that. This issue was observed in an environment with many hosts connecting multiple ctrls simoutanuosly, creating a delay in allocating a ctrl leading up to this race window.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.10:rc1:*:*:*:*:*:*

History

09 Aug 2024, 14:55

Type Values Removed Values Added
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 4.7
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.10:rc1:*:*:*:*:*:*
References () https://git.kernel.org/stable/c/2f3c22b1d3d7e86712253244797a651998c141fa - () https://git.kernel.org/stable/c/2f3c22b1d3d7e86712253244797a651998c141fa - Patch
References () https://git.kernel.org/stable/c/5502c1f1d0d7472706cc1f201aecf1c935d302d1 - () https://git.kernel.org/stable/c/5502c1f1d0d7472706cc1f201aecf1c935d302d1 - Patch
References () https://git.kernel.org/stable/c/818004f2a380420c19872171be716174d4985e33 - () https://git.kernel.org/stable/c/818004f2a380420c19872171be716174d4985e33 - Patch
References () https://git.kernel.org/stable/c/940a71f08ef153ef807f751310b0648d1fa5d0da - () https://git.kernel.org/stable/c/940a71f08ef153ef807f751310b0648d1fa5d0da - Patch
References () https://git.kernel.org/stable/c/b4fed1443a6571d49c6ffe7d97af3bbe5ee6dff5 - () https://git.kernel.org/stable/c/b4fed1443a6571d49c6ffe7d97af3bbe5ee6dff5 - Patch
References () https://git.kernel.org/stable/c/c758b77d4a0a0ed3a1292b3fd7a2aeccd1a169a4 - () https://git.kernel.org/stable/c/c758b77d4a0a0ed3a1292b3fd7a2aeccd1a169a4 - Patch
CWE CWE-401
First Time Linux
Linux linux Kernel

30 Jul 2024, 13:32

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: nvmet: corrige una posible fuga al destruir un ctrl durante el establecimiento de qp En nvmet_sq_destroy capturamos sq->ctrl temprano y si no es NULL sabemos que se asignó un ctrl (en el controlador de solicitudes de conexión de administrador) y necesitamos liberar los AER pendientes, borrar ctrl->sqs y sq->ctrl (principalmente para nvme-loop) y eliminar la referencia final en ctrl. Sin embargo, es posible una pequeña ventana donde se inicia nvmet_sq_destroy (como resultado de que el cliente se rinde y se desconecta) al mismo tiempo que el cmd de conexión del administrador de nvme (que puede estar en una etapa inicial). Pero *antes* de kill_and_confirm de sq->ref (es decir, la conexión del administrador logró obtener una referencia en vivo de sq). En este caso, se asignó sq->ctrl sin embargo después de ser capturado en una variable local en nvmet_sq_destroy. Esto evitó la caída de la referencia final en Ctrl. Resuelva esto volviendo a capturar sq->ctrl después de que se hayan completado todas las solicitudes en curso, donde con seguridad la referencia sq->ctrl es definitiva, y avance en función de eso. Este problema se observó en un entorno con muchos hosts que conectaban múltiples controles simultáneamente, lo que creaba un retraso en la asignación de un control que conducía a esta ventana de ejecución.

30 Jul 2024, 08:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-07-30 08:15

Updated : 2024-08-09 14:55


NVD link : CVE-2024-42152

Mitre link : CVE-2024-42152

CVE.ORG link : CVE-2024-42152


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-401

Missing Release of Memory after Effective Lifetime