CVE-2025-68372 in Linuxinformation

Résumé

par VulDB • 21/05/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

nbd : reporter le config_put dans recv_work

Il existe un problème UAF (Use-After-Free) dans recv_work lors de l'exécution de NBD_CLEAR_SOCK et NBD_CMD_RECONFIGURE : nbd_genl_connect // conf_ref=2 (connect et recv_work A) nbd_open // conf_ref=3 recv_work A terminé // conf_ref=2 NBD_CLEAR_SOCK // conf_ref=1 nbd_genl_reconfigure // conf_ref=2 (déclenche recv_work B) fermeture de nbd // conf_ref=1 recv_work B config_put // conf_ref=0 atomic_dec(&config->recv_threads); -> UAF

Ou uniquement avec NBD_CLEAR_SOCK : nbd_genl_connect // conf_ref=2 nbd_open // conf_ref=3 NBD_CLEAR_SOCK // conf_ref=2 fermeture de nbd nbd_release config_put // conf_ref=1 recv_work config_put // conf_ref=0 atomic_dec(&config->recv_threads); -> UAF

Le commit 87aac3a80af5 ("nbd: appeler nbd_config_put() avant de notifier le waiters") a déplacé nbd_config_put() pour qu'il s'exécute avant de réveiller le waiter dans recv_work, afin de s'assurer que nbd_start_device_ioctl() ne serait pas réveillé alors que nbd->task_recv n'était pas encore effacé.

Cependant, dans nbd_start_device_ioctl(), après avoir été réveillé, il appelle explicitement flush_workqueue() pour s'assurer que tous les travaux en cours sont terminés. Par conséquent, il n'est pas nécessaire de déplacer le config_put avant le réveil.

Déplacer nbd_config_put() à la fin de recv_work, afin que la référence soit conservée pendant toute la durée de vie du thread de travail. Cela garantit que la configuration ne peut pas être libérée tant que recv_work est toujours en cours d'exécution, même en cas d'intercalation entre clear et reconfigure.

De plus, nous n'avons pas à nous soucier de recv_work libérant le dernier nbd_put (ce qui provoquerait un blocage) :

chemin A (netlink avec NBD_CFLAG_DESTROY_ON_DISCONNECT) : connect // nbd_refs=1 (déclenche recv_work) ouverture de nbd // nbd_refs=2 NBD_CLEAR_SOCK fermeture de nbd nbd_release nbd_disconnect_and_put flush_workqueue // recv_work terminé nbd_config_put nbd_put // nbd_refs=1 nbd_put // nbd_refs=0 queue_work

chemin B (netlink sans NBD_CFLAG_DESTROY_ON_DISCONNECT) : connect // nbd_refs=2 (déclenche recv_work) ouverture de nbd // nbd_refs=3 NBD_CLEAR_SOCK // conf_refs=2 fermeture de nbd nbd_release nbd_config_put // conf_refs=1 nbd_put // nbd_refs=2 recv_work terminé // conf_refs=0, nbd_refs=1 rmmod // nbd_refs=0

Dépend de : e2daec488c57 ("nbd: Correction du hungtask lors de nbd_config_put")

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsable

Linux

Réserver

16/12/2025

Divulgation

24/12/2025

Modérer

accepté

Entrée

VDB-338167

CPE

prêt

EPSS

0.00172

KEV

non

Activités

très faible

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!