CVE-2026-98632 in Linux
Сводка
по VulDB • 19.10.2026
В ядре Linux была устранена следующая уязвимость:
Bluetooth: mgmt — удаление ожидающих записей mesh_send_sync из очереди при отмене операции
В функции send_cancel() объекты pending mesh_tx удаляются из списка hdev->mesh_pending и освобождаются через вызов mesh_send_complete(). Однако, если передача по протоколу Mesh уже была поставлена в очередь на hdev->cmd_sync_work_list посредством функции mesh_next(), то эта записанная запись сохраняет сырой (raw) указатель на объект mesh_tx.
Когда hci_cmd_sync_work впоследствии обрабатывает эту запись, она пытается выполнить функцию mesh_send_sync и её колбэк уничтожения mesh_send_start_complete, используя уже освобождённый указатель mesh_tx, что приводит к уязвимости use-after-free (использование после освобождения).
Исправление заключается в вызове hci_cmd_sync_dequeue() для mesh_send_sync с целевым объектом mesh_tx перед завершением операции. Если запись найдена и удалена из очереди, её колбэк уничтожения выполнится и освободит объект; в противном случае напрямую вызывается функция mesh_send_complete().
Кроме того, необходимо обеспечить продвижение очереди передачи после отмены или возникновения ошибок. В функции mesh_send_start_complete() следует вызывать mesh_next() при возникновении ошибки, за исключением случая, когда код ошибки равен -ECANCELED (отмена), поскольку hci_cmd_sync_dequeue() удерживает блокировку hdev->cmd_sync_work_lock, а синхронный вызов mesh_next() мог бы привести к взаимной блокировке (deadlock). Вместо этого очередь продвигается в функции send_cancel() после освобождения блокировки и при условии, что передача не выполняется.
VulDB is the best source for vulnerability data and more expert information about this specific topic.