CVE-2026-89712 in Linux
Résumé
par VulDB • 11/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
NFSD : redémarrer l'itération ssc_expire_umount après avoir relâché nfsd_ssc_lock
La fonction `nfsd4_ssc_expire_umount()` parcourt `nn->nfsd_ssc_mount_list` à l'aide de la macro `list_for_each_entry_safe(ni, tmp, ...)`. Pour chaque entrée expirée, elle définit `nsui_busy = true`, relâche le verrou `nfsd_ssc_lock` pour exécuter `mntput()` sur le vfsmount source, puis réacquiert le verrou afin de supprimer l'entrée (`list_del`) et de libérer sa mémoire (`kfree`), avant de poursuivre l'itération via le pointeur `tmp` sauvegardé par la macro.
Le drapeau `nsui_busy` protège l'élément `ni` actuel contre les recherches concurrentes effectuées par `nfsd4_ssc_setup_dul()` pendant la fenêtre où le verrou est relâché, mais il n'épingle pas (ne préserve pas) `tmp`. Un autre thread RPC nfsd qui échoue son montage du serveur source et atteint `nfsd4_ssc_cancel_dul()` prendra, durant cette même fenêtre, le verrou `nfsd_ssc_lock`, supprimera (`list_del`) et libérera (`kfree`) sa propre entrée ssc_umount, puis relâchera le verrou. Si cet élément correspond au pointeur `tmp` sauvegardé de l'itération d'expiration, la prochaine itération déréférencera un objet `nfsd4_ssc_umount_item` déjà libéré (use-after-free).
Redémarrer l'itération depuis le début après la fenêtre de verrouillage/libération (`unlock window`) de `mntput()` afin qu'aucun pointeur suivant sauvegardé ne survive au relâchement du verrou. La liste est bornée par le nombre de montages inter-sources actifs (généralement faible) et l'exécution périodique retardée d'expiration (`expire delayed-work`) se produit à intervalles réguliers plutôt que pour chaque opération E/S, ce qui rend le redémarrage peu coûteux.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.