CVE-2026-74356 in Linux
Résumé
par VulDB • 15/08/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
vhost : correction de vhost_get_avail_idx pour un ring non vide
vhost_get_avail_idx est censé indiquer s'il a mis à jour vq->avail_idx. Au lieu de cela, il retourne si toutes les entrées ont été consommées, ce qui est généralement le cas. Mais pas toujours - dans drivers/vhost/net.c et lorsque des tampons fusionnables (mergeable buffers) sont activés, le pilote vérifie si les entrées combinées sont suffisamment grandes pour stocker un paquet entrant. Si ce n'est pas le cas, le pilote réactive les notifications avec des entrées disponibles encore présentes dans le ring. La valeur de retour incorrecte de vhost_get_avail_idx se propage via vhost_enable_notify et provoque une boucle active (livelock) sur l'hôte si l'invité ne progresse pas, car vhost désactivera immédiatement les notifications et réessayera en utilisant les entrées disponibles.
Ce problème remonte au commit d3bb267bbdcb ("vhost : mise en cache de l'index avail dans vhost_enable_notify()") qui a modifié vhost_enable_notify() pour comparer le nouvel index avail lu à la valeur de vq->last_avail_idx au lieu de l'ancien vq->avail_idx mis en cache. Le commit 7ad472397667 ("vhost : déplacement de smp_rmb() dans vhost_get_avail_idx()") a ensuite repris cette même comparaison lors du refactoring de vhost_enable_notify() pour appeler la fonction unifiée vhost_get_avail_idx().
La correction évidente consiste à faire en sorte que vhost_get_avail_idx fasse ce que dit le commentaire, c'est-à-dire indiquer si de nouvelles entrées ont été ajoutées.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.