CVE-2026-64142 in LinuxИнформация

Сводка

по VulDB • 20.07.2026

В ядре Linux устранена следующая уязвимость:

ksmbd: исправлены гонки (race conditions) в работе сборщика мусора для долговременных дескрипторов при поиске по списку m_fp_list.

Функция ksmbd_durable_scavenger() имеет две связанные гонки с любым обходчиком, который итерирует список f_ci->m_fp_list, включая функцию ksmbd_lookup_fd_inode() (используемую в ksmbd_vfs_rename) и проверки режимов совместного доступа (share-mode checks) в файле fs/smb/server/smb_common.c.

(1) Повторное использование заголовка списка fp->node. Долговременные дескрипторы могут оставаться связанными со списком f_ci->m_fp_list после завершения сеанса, поэтому проверки режимов совместного доступа все еще видят их, пока дескриптор может быть переподключен. Сборщик мусора собирал истекшие дескрипторы путем добавления fp->node в локальный список scavenger_list после удаления их из глобального IDR долговременных идентификаторов. Поскольку fp->node является тем же самым list_head, который используется списком m_fp_list, вызов list_add(&fp->node, &scavenger_list) перезаписывает ссылки списка m_fp_list и приводит к повреждению обоих списков. CONFIG_DEBUG_LIST может сообщить об этом при прохождении пути проверки режимов совместного доступа.

(2) Гонка ссылок (refcount race) с обходчиками списка m_fp_list. Сборщик мусора квалифицирует истекший долговременный дескриптор, проверяя условие atomic_read(&fp->refcount) > 1 и наличие fp->conn под блокировкой global_ft.lock, удаляет fp из глобальной структуры global_ft, а затем снимает блокировку global_ft.lock перед отсоединением fp от списка m_fp_list и освобождением памяти. В течение этого промежутка времени fp все еще связан со списком m_fp_list с состоянием f_state == FP_INITED. Вызов ksmbd_lookup_fd_inode() под блокировкой m_lock вызывает функцию ksmbd_fp_get() (атомарное увеличение счетчика ссылок, если он не равен нулю, при этом текущее значение все еще равно 1) и получает живую ссылку; затем сборщик мусора отсоединяет и освобождает fp, пока владелец этой ссылки сохраняет на него ссылку. Это приводит к уязвимости Use-After-Free (UAF) в последующем вызове ksmbd_fd_put() владельцем и при любом чтении полей обходчиком режимов совместного доступа, который одновременно выполняет итерацию списка m_fp_list без получения ссылки через ksmbd_fp_get() (пути типа smb_check_perm_dleases).

Исправление обеих проблем:

* Прекратить повторное использование fp->node в качестве узла списка для внутренних нужд сборщика мусора. Удалить один истекший дескриптор из глобальной структуры global_ft под блокировкой global_ft.lock, взять явную временную ссылку (transient reference), снять блокировку, отсоединить fp->node от списка m_fp_list под блокировкой f_ci->f_lock, а затем уменьшить как срок действия долговременного дескриптора,

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Ответственный

Linux

Резервировать

19.07.2026

Раскрытие

19.07.2026

Модерация

принято

Вход

VDB-380383

EPSS

0.00000

KEV

Нет

Деятельности

Очень низкий

Источники

Do you know our Splunk app?

Download it now for free!