Katalog CVE

CVE-2026-99156

WysokieCVSS 7.8
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.18%

Percentyl 8 - wyżej niż 8% wszystkich znanych CVE

Streszczenie

W jądrze Linux w sterowniku scsi: st występuje wyścig use-after-free między st_remove() a st_open(). st_remove() usuwa wpis z idr dopiero po zwolnieniu referencji, więc równoległe st_open() może znaleźć zwolnioną strukturę i wykonać na niej kref_get().

Ocena ryzyka

Lokalny atakujący lub błąd w obsłudze urządzenia może doprowadzić do użycia zwolnionej pamięci, powodując awarię jądra (panic) lub potencjalne podniesienie uprawnień.

Rekomendacja

Zaktualizuj jądro Linux do wersji zawierającej poprawkę, która usuwa wpis z idr przed zwolnieniem referencji pod st_ref_mutex.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: scsi: st: Fix use-after-free race between st_remove() and st_open() st_remove() drops the probe reference on the scsi_tape with kref_put() and only afterwards removes its index from st_index_idr. If that was the last reference, scsi_tape_release() frees the structure while it is still published in the idr. scsi_tape_get(), called from st_open(), looks up the tape in st_index_idr and takes a reference under st_ref_mutex and st_index_lock. remove_cdevs() does not wait for opens that are already past chrdev_open(), so an open that is blocked on st_ref_mutex while st_remove() holds it can take the mutex as soon as st_remove() drops it, find the freed tpnt in the idr and call kref_get() on it: 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 the index from the idr before dropping the reference, all under st_ref_mutex. A concurrent scsi_tape_get() now either runs first and holds a valid reference that keeps the tape alive, or runs afterwards and finds nothing, so st_open() fails with -ENXIO. This restores the ordering st_remove() had before the conversion to st_index_idr, where the tape was unpublished from scsi_tapes[] before the final kref_put().

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS