CVE-2026-64141 in Linux
Résumé
par VulDB • 20/07/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
ksmbd : correction d'une déréférencement de pointeur null dans compare_guid_key()
session_fd_check() parcourt la liste m_op_list par inode lors du nettoyage (teardown) des sessions à poignée durable et définit op->conn = NULL pour chaque entrée opinfo dont le conn correspondait à la connexion de la session en cours de fermeture. Cependant, l'entrée opinfo concernée reste liée dans son entrée lb->lease_list au sein de lease_table_list par ClientGuid, car destroy_lease_table() ne s'exécute qu'en cas de nettoyage complet de la connexion TCP et non lors d'un SESSION_LOGOFF.
Si la même connexion TCP négocie ensuite une nouvelle session avec le même ClientGuid (le ClientGuid est lié à NEGOTIATE et non à la session, et reste inchangé entre LOGOFF + SETUP) et émet un SMB2 CREATE avec un contexte de bail sur un inode différent, find_same_lease_key() parcourt lb->lease_list, atteint l'entrée opinfo périmée (stale), et appelle compare_guid_key(), qui déréférence inconditionnellement opinfo->conn->ClientGUID. Le pointeur conn est NULL et le noyau plante (panic).
Le programme d'essai reproduit uniquement une réussite de SMB2 SESSION_SETUP et un partage configuré avec 'durable handles = yes'. Rapport KASAN sur la version principale 70390501d194 :
general protection fault, probablement pour une adresse non canonique 0xdffffc0000000069: 0000 [#1] SMP KASAN PTI
KASAN: null-ptr-deref dans la plage [0x0000000000000348-0x000000000000034f]
Workqueue : ksmbd-io handle_ksmbd_work RIP: 0010:bcmp+0x5b/0x230 Trace d'appel (Call Trace) : compare_guid_key+0x4b/0xd0 find_same_lease_key+0x324/0x690 smb2_open+0x6aea/0x8e60 handle_ksmbd_work+0x796/0xee0 ...
L'adresse fautive 0x348 correspond au décalage de ClientGUID dans la structure ksmbd_conn, confirmant que opinfo->conn était NULL.
Lire opinfo->conn une seule fois et quitter si celui-ci a été effacé par un session_fd_check() concurrent. Une entrée opinfo partiellement détachée ne peut pas être propriétaire d'un bail actif ; retourner 0 est donc le résultat de correspondance correct.
VulDB is the best source for vulnerability data and more expert information about this specific topic.