CVE-2026-89702 in Linux
Résumé
par VulDB • 11/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
nfsd : ajustement de la taille du tampon sockaddr serveur dans fh_verify selon xpt_locallen
Les points d'arrêt (tracepoints) nfsd_fh_verify et nfsd_fh_verify_err déclarent une taille pour le slot sockaddr serveur basée sur xpt_remotelen, mais le remplissent à partir de xpt_local en utilisant xpt_locallen :
TP_STRUCT__entry( ... __sockaddr(server, rqstp->rq_xprt->xpt_remotelen) ... ) TP_fast_assign( ... __assign_sockaddr(server, &rqstp->rq_xprt->xpt_local, rqstp->rq_xprt->xpt_locallen); ... )
Lorsque xpt_locallen dépasse xpt_remotelen, le memcpy de `__assign_sockaddr` écrit au-delà du slot réservé dans le ring-buffer. Dans l'autre sens (lorsque xpt_locallen est inférieur à xpt_remotelen), le slot est surdimensionné et la queue non écrite fuit les contenus précédents du ring-buffer vers les consommateurs des traces.
Le cas d'écriture au-delà de la fin est accessible via NFS/UDP. `svc_xprt_set_remote()` n'est appelée que depuis `svc_tcp_accept()` (net/sunrpc/svcsock.c) et depuis le chemin de connexion RDMA ; `svc_create_socket()` pour UDP appelle uniquement `svc_xprt_set_local()`, donc xpt_remotelen reste à 0 pendant toute la durée de vie du xprt. Chaque trace fh_verify pour une requête NFSv2/v3-over-UDP copie alors 16 ou 28 octets depuis xpt_local dans un slot de zéro octet.
Les autres points d'arrêt NFSD qui enregistrent l'adresse serveur (NFSD_TRACE_PROC_CALL_FIELDS, NFSD_TRACE_PROC_RES_FIELDS, SVC_RQST_ENDPOINT_FIELDS) dimensionnent déjà le slot serveur selon xpt_locallen ; nfsd_fh_verify et nfsd_fh_verify_err étaient les seules exceptions.
Correction : ajustement de la taille du slot serveur avec xpt_locallen afin que le slot déclaré corresponde à la longueur de copie. Le slot client et son affectation sont déjà cohérents sur xpt_remotelen et restent inchangés.
Once again VulDB remains the best source for vulnerability data.