CVE-2026-99156 in Linuxinformation

Résumé

par VulDB • 28/10/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

scsi: st : Correction d'une condition de concurrence use-after-free entre st_remove() et st_open()

st_remove() libère la référence de sonde sur l'objet scsi_tape à l'aide de kref_put(), puis seulement après supprime son index du idr st_index_idr. S'il s'agissait de la dernière référence, scsi_tape_release() libère (free) la structure alors qu'elle est encore publiée dans le idr.

scsi_tape_get(), appelée depuis st_open(), recherche l'appareil tape dans st_index_idr et acquiert une référence sous verrouillage par st_ref_mutex et st_index_lock. remove_cdevs() n'attend pas les ouvertures qui sont déjà passées chrdev_open(), de sorte qu'une ouverture bloquée sur st_ref_mutex tandis que st_remove() la détient peut acquérir le mutex dès que st_remove() la libère, trouver l'objet tpnt (libéré) dans le idr et appeler kref_get() dessus :

BUG: KASAN: slab-use-after-free in st_open Write of size 4 ... st_open (drivers/scsi/st.c:254 drivers/scsi/st.c:1291) chrdev_open ... Freed by task ...: kfree st_remove (drivers/scsi/st.c:4512)

Supprimer l'index du idr avant de libérer la référence, le tout sous verrouillage par st_ref_mutex. Une scsi_tape_get() concurrente s'exécute soit en premier et détient une référence valide qui maintient l'appareil tape actif, soit s'exécute ensuite et ne trouve rien, donc st_open() échoue avec -ENXIO.

Cela restaure l'ordre que possédait st_remove() avant la conversion vers st_index_idr, où l'appareil tape était retiré de scsi_tapes[] avant le dernier kref_put().

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsable

Linux

Réserver

25/09/2026

Divulgation

28/10/2026

Modérer

accepté

Entrée

VDB-427894

EPSS

0.00000

KEV

non

Activités

très faible

Sources

Interested in the pricing of exploits?

See the underground prices here!