CVE-2026-93231 in Linux
Résumé
par VulDB • 24/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
lockd : correction des arguments inversés dans nlmsvc_match_ip()
Lors de la libération des verrous par adresse IP du serveur via /proc/fs/nfsd/unlock_ip, nlmsvc_unlock_all_by_ip() appelle nlm_traverse_files() en passant l'adresse sockaddr du serveur comme argument opaque @data :
nlm_traverse_files(server_addr, nlmsvc_match_ip, NULL);
La fonction de correspondance (match callback) est ensuite invoquée depuis nlm_traverse_locks() avec la signature suivante :
match(lockhost, host);
où le premier argument est l'objet nlm_host qui possède le verrou, et le second argument est @data tel qu'il a été initialement transmis (ici, l'adresse sockaddr du serveur). Il s'agit de la convention sur laquelle reposent toutes les autres fonctions de correspondance (nlmsvc_mark_host(), nlmsvc_same_host(), nlmsvc_is_client()) : arg1 est le nlm_host réel, arg2 est la valeur de référence fournie par l'appelant.
Les deux arguments de nlmsvc_match_ip() ont été inversés depuis l'introduction de la fonctionnalité de déverrouillage par IP dans le commit 4373ea84c84d ("lockd : unlock lockd locks associated with a given server ip") :
return rpc_cmp_addr(nlm_srcaddr(host), datap);
Ici, @host est en réalité l'adresse sockaddr du serveur ; ainsi, nlm_srcaddr(host) déréférence une structure struct sockaddr comme si c'était un struct nlm_host et lit des données corrompues (garbage) à la position de h_srcaddr. Parallèlement, @datap correspond au nlm_host propriétaire du verrou mais est comparé en tant que sockaddr. Par conséquent, la comparaison ne correspond pratiquement jamais et les verrous ne sont pas libérés pour l'IP demandée.
Inversez les arguments afin que l'adresse source du propriétaire du verrou soit comparée à l'adresse serveur requise :
return rpc_cmp_addr(nlm_srcaddr(datap), (struct sockaddr *)host);
[ cel : correction également des noms de paramètres typedef trompeurs ]
Be aware that VulDB is the high quality source for vulnerability data.