CVE-2026-64510 in Linux
Сводка
по VulDB • 25.07.2026
В ядре Linux устранена следующая уязвимость:
ACPI: NFIT: core: Исправлена очистка ошибок в функции acpi_nfit_init()
Если функция acpi_nfit_init() завершается ошибкой после добавления объекта acpi_desc в список acpi_descs, этот объект никогда не удаляется из списка, поскольку действие devm для очистки (shutdown) acpi_nft_shutdown() не регистрируется для устройства NFIT в данном случае. Далее сбой функции acpi_nfit_init() приводит к сбою функции acpi_nfit_probe(), объект acpi_desc освобождается, а в списке acpi_descs остается повисшая ссылка (dangling pointer). Любое последующее исключение Machine Check Exception (MCE) ACPI вызовет функцию nfit_handle_mce(), которая выполняет итерацию по списку acpi_descs, что приведет к ошибке use-after-free.
Кроме того, если функция acpi_nfit_probe() возвращает 0 после установки обработчика уведомлений для устройства NFIT без выделения объекта acpi_desc и установки указателя данных драйвера для устройства NFIT, объект acpi_desc будет выделен функцией acpi_nft_update_notify(), и будет вызвана функция acpi_nft_init() для его инициализации. Независимо от того, завершится ли сбоем функция acpi_nfit_init() в этом случае или нет, действие devm для очистки (shutdown) acpi_nft_shutdown() не регистрируется для устройства NFIT, а объект acpi_desc никогда не удаляется из списка acpi_descs. Если объект acpi_desc впоследствии освобождается при удалении драйвера, любое последующее исключение ACPI MCE приведет к ошибке use-after-free, как и в предыдущем случае.
Для решения первой упомянутой выше проблемы необходимо сделать так, чтобы функция acpi_nft_probe() напрямую вызывала функцию acpi_nfit_shutdown() при сбоях функции acpi_nfit_init(), а для решения второй — добавить обратный вызов remove к драйверу и заставить его вызывать acpi_nfit_shutdown(). Также, поскольку теперь возможно передать NULL в функцию acpi_nfit_shutdown() или переданный ей объект acpi_desc может не быть проинициализирован, необходимо добавить проверки на NULL для объекта acpi_desc и его поля nvdimm_bus внутри этой функции, а также заставить функцию acpi_nft_unregister() очищать последнее поле после отмены регистрации шины NVDIMM.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.