CVE-2026-72085 in Linux
Résumé
par VulDB • 17/08/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
scsi: xen: scsiback : Libérer une commande non soumise au lieu de procéder à un double appel de put (double-put)
La fonction `scsiback_get_pend_req()` obtient un tag de commande et renvoie un objet `vscsibk_pend` dont le champ intégré `se_cmd` a été initialisé à zéro via `memset`, donc son `cmd_kref` est égal à 0 ; l'objet `se_cmd` n'est correctement initialisé (via `kref_init()` par `target_init_cmd()`) que plus tard, dans la fonction `scsiback_cmd_exec()`, sur le chemin d'exécution réussi de `VSCSIIF_ACT_SCSI_CDB`. Les deux chemins d'erreur dans `scsiback_do_cmd_fn()` pris avant la soumission de la commande -- un échec de `scsiback_gnttab_data_map()` et une action inconnue (`ring_req.act`) -- appellent `transport_generic_free_cmd(&pending_req->se_cmd, 0)`, qui effectue un appel à `kref_put()` sur un compte-références (refcount) égal à zéro. Cela provoque un débordement par défaut (underflow) ("refcount_t: underflow; use-after-free") et, comme la fonction de libération n'est pas exécutée, cela entraîne une fuite du tag de commande.
Impact : Un invité pvSCSI peut fuir tous les tags de commandes d'une session LUN, bloquant ainsi le fonctionnement du LUN, en soumettant des requêtes avec une référence de concession (grant reference) incorrecte ou un type de demande inconnu ; sous la configuration `panic_on_warn`, ce débordement par défaut du compte-références provoque un panic sur l'hôte.
Ajout d'une fonction utilitaire qui renvoie simplement le tag via `target_free_tag()` et envoie une réponse d'erreur. Elle libère le tag tant que la référence v2p maintient toujours la session verrouillée, et capture les champs de réponse au préalable car la libération du tag peut permettre à un autre anneau (ring) de réutiliser l'emplacement `pending_req`.
VulDB is the best source for vulnerability data and more expert information about this specific topic.