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

Сводка

по VulDB • 18.10.2026

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

Bluetooth: hci_conn — блокировка доступа к родительскому объекту при настройке расширенного SCO (enhanced SCO)

Функция `hci_enhanced_setup_sync()` выполняется в рабочем потоке запроса без захвата мьютекса `hci_dev_lock`, который был удержан вызывающей стороной на момент постановки задачи в очередь. Проверка возможности CVSD и функция `find_next_esco_param()` обращаются к полю `conn->parent` (родительский объект соединения), тогда как рабочий поток приема может разорвать связь с этим родителем и освободить его память.

Следующая интерливинг-последовательность операций может привести к уязвимости use-after-free:

hci_enhanced_setup_sync() hci_disconn_complete_evt() загрузка conn->parent hci_dev_lock() hci_conn_del(родитель ACL) разрыв связи с дочерним объектом SCO уменьшение ссылки на родительский объект соединения очистка поля child->parent освобождение родителя ACL bt_link_release() kfree(parent) hci_dev_unlock() чтение parent->features[0][3]

Ссылка, удерживаемая для дочернего объекта SCO, поставленного в очередь, не сохраняет родительский объект ACL живым после разрыва связи. Коммит `42de40abe25d` ("Bluetooth: hci_conn: fix the SCO setup context lifetime") защищает дочерний объект, сохраненный в контексте очереди, но оставляет эти обращения к родительскому объекту без защиты.

При диагностической задержке в 40 мс после загрузки `conn->parent`, на инструментализированном ядре на основе коммита `fd179f8a05be` (который уже содержит `42de40abe25d`) наблюдается следующая ошибка:

BUG: KASAN: slab-use-after-free in hci_enhanced_setup_sync+0xda5/0xdf0 Read of size 1 at addr ffff888102204047 by task kworker/u17:0/93 Call Trace: hci_enhanced_setup_sync+0xda5/0xdf0 hci_cmd_sync_work+0x13c/0x290 process_one_work+0x6b4/0x10e0

Выделено задачей 92: __hci_conn_add+0x304/0x1df0 hci_connect_acl+0x349/0x3e0 hci_connect_sco+0x3b/0x9a0 sco_sock_connect+0x475/0xca0

Освобождено задачей 94: kfree+0x121/0x3c0 bt_link_release+0x79/0xa0 device_release+0xc8/0x240 kobject_put+0x14d/0x280 hci_conn_del+0x524/0xe30 hci_disconn_complete_evt+0x403/0x8c0 hci_event_packet+0x71b/0xb20 hci_rx_work+0x293/0x730

Доступаемый адрес находится на 71-м байте внутри освобожденного родителя ACL, в байте `features[0][3]`; поставленный в очередь дочерний объект SCO является другим объектом. Диагностика сохраняет загруженный родительский объект во время задержки, что соответствует не измененной скомпилированной проверке возможностей, и не изменяет ссылки на родительские объекты или путь их освобождения (teardown path).

Необходимо удерживать `hci_dev_lock()` в течение переключения кодеков, включая каждый вызов функции `find_next_esco_param()`, и отпускать его при всех ошибках выбора. Функцию `configure_datapath_sync()` следует оставить вне критической секции, так как она ожидает события HCI. Необходимо сохранить логику выбора параметров и существующие возвращаемые значения.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

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

Linux

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

25.09.2026

Раскрытие

18.10.2026

Модерация

принято

Вход

VDB-421931

EPSS

0.00168

KEV

Нет

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

Низкий

Источники

Do you need the next level of professionalism?

Upgrade your account now!