Katalog CVE

CVE-2026-23306

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

Streszczenie

W jądrze Linux w sterowniku scsi: pm8001 występuje podwójne zwolnienie pamięci (double free) w funkcji pm8001_queue_command(). Gdy stan phy jest wyłączony lub urządzenie zniknęło, funkcja zwraca -ENODEV po uprzednim zwolnieniu zadania SAS, co powoduje, że warstwa libsas ponownie zwalnia to samo zadanie.

Ocena ryzyka

Podwójne zwolnienie pamięci może prowadzić do uszkodzenia pamięci jądra, awarii systemu (panic) lub potencjalnie do wykonania kodu z uprawnieniami jądra, co zagraża stabilności i bezpieczeństwu serwera.

Rekomendacja

Zaktualizuj jądro Linux do wersji zawierającej poprawkę dla pm8001_queue_command(), aby wyeliminować podwójne zwolnienie pamięci.

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: pm8001: Fix use-after-free in pm8001_queue_command() Commit e29c47fe8946 ("scsi: pm8001: Simplify pm8001_task_exec()") refactors pm8001_queue_command(), however it introduces a potential cause of a double free scenario when it changes the function to return -ENODEV in case of phy down/device gone state. In this path, pm8001_queue_command() updates task status and calls task_done to indicate to upper layer that the task has been handled. However, this also frees the underlying SAS task. A -ENODEV is then returned to the caller. When libsas sas_ata_qc_issue() receives this error value, it assumes the task wasn't handled/queued by LLDD and proceeds to clean up and free the task again, resulting in a double free. Since pm8001_queue_command() handles the SAS task in this case, it should return 0 to the caller indicating that the task has been handled.

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