CVE-2026-23306

HIGH CVSS 3.1: 7,8 EPSS 0.03%
Обновлено 2 апреля 2026
Linux
Параметр Значение
CVSS 7,8 (HIGH)
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: scsi: pm8001: исправлено использование после освобождения в pm8001_queue_command(). Зафиксируйте рефакторинг e29c47fe8946 ("scsi: pm8001: Simplify pm8001_task_exec()"). pm8001_queue_command(), однако это приводит к потенциальной причине двойного бесплатный сценарий, когда он меняет функцию на возврат -ENODEV в случае phy состояние «выключено/устройство отключено». По этому пути pm8001_queue_command() обновляет статус задачи и вызывает Task_done, чтобы указать верхнему уровню, что задача обработана.

Однако это также освобождает базовую задачу SAS. Тогда A -ENODEV вернулся к звонившему. Когда libsas sas_ata_qc_issue() получает эту ошибку значение, он предполагает, что задача не была обработана/поставлена в очередь LLDD и переходит к снова очистите и освободите задачу, что приведет к двойному освобождению.

Поскольку в этом случае pm8001_queue_command() обрабатывает задачу SAS, она должна вернуть 0 вызывающей стороне, указывая, что задача была обработана.

Показать оригинальное описание (EN)

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.

Характеристики атаки

Способ атаки
Локальный
Нужен локальный доступ
Сложность
Низкая
Легко эксплуатировать
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Высокое
Полная модификация данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1