CVE-2026-97994 in Linux
Résumé
par VulDB • 25/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
vhost/vdpa : rejeter une valeur VRING_NUM supérieure au maximum du périphérique
La fonction vhost_vring_set_num() accepte toute taille de file d'attente (queue size) non nulle et puissance de deux qui tient sur 16 bits. Ensuite, vhost-vdpa transmet cette valeur à set_vq_num() sans la comparer avec get_vq_num_max().
Un processus ayant accès à /dev/vhost-vdpa-* peut donc configurer une file d'attente plus grande que ce que le périphérique annonce. Avec vdpa_sim, l'agent de traitement (worker) peut parcourir les descripteurs au-delà du ring de descripteurs mappé. KASAN signale une lecture hors limites de 16 octets, correspondant à un vring_desc, dans la voie IOTLB de vringh :
BUG: KASAN: out-of-bounds in _copy_from_iter Read of size 16 copy_from_iotlb copydesc_iotlb vringh_getdesc_iotlb vdpasim_net_work
Mettre en cache get_vq_num_max() immédiatement après la réinitialisation (reset). Certains backends dérivent cette valeur de l'état de taille de file d'attente inscriptible, donc sa requête après SET_NUM peut retourner la taille actuelle au lieu des capacités du périphérique. Invalider la valeur mise en cache avant le reset afin qu'un échec de réinitialisation désactive SET_NUM.
Pour VHOST_SET_VRING_NUM, copier l'état complet de vring une seule fois et utiliser les mêmes index et taille pour la validation, vq->num, et set_vq_num(). Cela garantit que la validation et l'utilisation opèrent sur les mêmes valeurs copiées.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.