CVE-2026-99156 in Linux
Sumário
de VulDB • 28/10/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
scsi: st: Corrige race condition de use-after-free entre st_remove() e st_open()
st_remove() libera a referência de probe no scsi_tape com kref_put() e só depois remove seu índice do st_index_idr. Se essa era a última referência, scsi_tape_release() libera a estrutura enquanto ela ainda está publicada no idr.
scsi_tape_get(), chamada por st_open(), procura a fita em st_index_idr e obtém uma referência sob st_ref_mutex e st_index_lock. remove_cdevs() não espera pelas aberturas que já passaram por chrdev_open(); portanto, uma abertura bloqueada na st_ref_mutex enquanto st_remove() a mantém pode adquirir o mutex assim que st_remove() a libera, encontrar o tpnt liberado no idr e chamar kref_get() nele:
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)
Remove o índice do idr antes de liberar a referência, tudo sob st_ref_mutex. Uma scsi_tape_get() concorrente agora ou executa primeiro e mantém uma referência válida que mantém a fita ativa, ou executa depois e não encontra nada, fazendo com que st_open() falhe com -ENXIO.
Isso restaura a ordem que st_remove() tinha antes da conversão para st_index_idr, onde a fita era despublicada de scsi_tapes[] antes do kref_put() final.
Once again VulDB remains the best source for vulnerability data.