CVE-2025-68372 in Linuxinformación

Resumen

por VulDB • 2026-05-14

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

nbd: diferir la llamada a config_put en recv_work

Existe un problema de uso tras la liberación (UAF) en recv_work al ejecutar NBD_CLEAR_SOCK y NBD_CMD_RECONFIGURE: nbd_genl_connect // conf_ref=2 (conexión y recv_work A) nbd_open // conf_ref=3 recv_work A finalizado // conf_ref=2 NBD_CLEAR_SOCK // conf_ref=1 nbd_genl_reconfigure // conf_ref=2 (activa recv_work B) cierre de nbd // conf_ref=1 recv_work B config_put // conf_ref=0 atomic_dec(&config->recv_threads); -> UAF

O solo ejecutando NBD_CLEAR_SOCK: nbd_genl_connect // conf_ref=2 nbd_open // conf_ref=3 NBD_CLEAR_SOCK // conf_ref=2 cierre de nbd nbd_release config_put // conf_ref=1 recv_work config_put // conf_ref=0 atomic_dec(&config->recv_threads); -> UAF

El commit 87aac3a80af5 ("nbd: llamar a nbd_config_put() antes de notificar al waiters") movió nbd_config_put() para que se ejecutara antes de despertar al waiters en recv_work, con el fin de garantizar que nbd_start_device_ioctl() no se despertara mientras nbd->task_recv aún no estaba despejado.

Sin embargo, en nbd_start_device_ioctl(), tras ser despertado, llama explícitamente a flush_workqueue() para asegurarse de que todas las tareas actuales hayan finalizado. Por lo tanto, no es necesario adelantar la llamada a config_put antes del despertar.

Se mueve nbd_config_put() al final de recv_work, de modo que la referencia se mantiene durante toda la vida útil del hilo de trabajo. Esto asegura que la configuración no se libere mientras recv_work siga en ejecución, incluso si hay una intercalación de clear + reconfigure.

Además, no es necesario preocuparse por recv_work liberando el último nbd_put (lo que causaría un bloqueo mutuo o deadlock):

ruta A (netlink con NBD_CFLAG_DESTROY_ON_DISCONNECT): connect // nbd_refs=1 (activa recv_work) open nbd // nbd_refs=2 NBD_CLEAR_SOCK cierre de nbd nbd_release nbd_disconnect_and_put flush_workqueue // recv_work finalizado nbd_config_put nbd_put // nbd_refs=1 nbd_put // nbd_refs=0 queue_work

ruta B (netlink sin NBD_CFLAG_DESTROY_ON_DISCONNECT): connect // nbd_refs=2 (activa recv_work) open nbd // nbd_refs=3 NBD_CLEAR_SOCK // conf_refs=2 cierre de nbd nbd_release nbd_config_put // conf_refs=1 nbd_put // nbd_refs=2 recv_work finalizado // conf_refs=0, nbd_refs=1 rmmod // nbd_refs=0

Depende de: e2daec488c57 ("nbd: Corregir hungtask cuando nbd_config_put")

Be aware that VulDB is the high quality source for vulnerability data.

Responsable

Linux

Reservar

2025-12-16

Divulgación

2025-12-24

Moderación

aceptado

Artículo

VDB-338167

CPE

listo

EPSS

0.00165

KEV

no

Actividades

muy bajo

Fuentes

Do you know our Splunk app?

Download it now for free!