Ad

CVE-2026-72337

NONE EPSS 0.20%
Обновлено 17 августа 2026
Linux
Параметр Значение
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: Bluetooth: 6lowpan: избегать неотслеживаемой работы lowpan_enable_set() выделяет временный рабочий элемент и планирует do_enable_set() для system_wq, затем возвращается в debugfs. Debugfs активен операция завершилась на этом этапе, но рабочий все еще выполняет модуль text и манипулирует Enable_6lowpan и Listen_chan. bt_6lowpan_exit() удаляет файлы debugfs и немедленно закрывается и ставит Listen_chan. У него нет указателя на поставленный в очередь рабочий элемент, поэтому он не может отмените или очистите его перед удалением состояния, которое использует работник.

Сценарий с ошибкой включает в себя два пути, где в каждом столбце указан порядок внутри этого пути: debugfs включает выход модуля записи 1. lowpan_enable_set() выделяет 1. bt_6lowpan_exit() удаляет set_enable работает с файлом debugfs 2. Schedule_work() ставит в очередь 2. bt_6lowpan_exit() закрывается do_enable_set() и помещает Listen_chan 3. операция записи возвращается. 3. Разборку модуля можно продолжать. 4. do_enable_set() запускается позже против устаревшего состояния Запустите переход состояния включения синхронно в lowpan_enable_set(). вместо этого. Простой установщик debugfs может спать, и этот файл уже обрабатывает элемент управления 6LoWPAN записывает синхронно под тем же set_lock.

Как только установщик возвращается, удаление debugfs охватывает всю операцию, и выход невозможен. более длительная гонка с неотслеживаемым рабочим элементом. Проверка воспроизвела этот отчет ядра: ОШИБКА: KASAN: slab-use-after-free в do_enable_set+0x113/0x2e0 Рабочая очередь: события do_enable_set [bluetooth_6lowpan] Адрес ошибки принадлежит объекту по адресу ffff888109cb8000.

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

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: 6lowpan: avoid untracked enable work lowpan_enable_set() allocates a temporary work item and schedules do_enable_set() on system_wq, then returns to debugfs. The debugfs active operation has ended at that point, but the worker still executes module text and manipulates enable_6lowpan and listen_chan. bt_6lowpan_exit() removes the debugfs files and immediately closes and puts listen_chan. It has no pointer to the queued work item, so it cannot cancel or flush it before tearing down the state that the worker uses. The buggy scenario involves two paths, with each column showing the order within that path: debugfs enable write module exit 1. lowpan_enable_set() allocates 1. bt_6lowpan_exit() removes set_enable work the debugfs file 2. schedule_work() queues 2. bt_6lowpan_exit() closes do_enable_set() and puts listen_chan 3. the write operation returns 3. module teardown can continue 4. do_enable_set() later runs against stale state Run the enable state transition synchronously in lowpan_enable_set() instead. The simple debugfs setter can sleep, and this file already handles the 6LoWPAN control write synchronously under the same set_lock. Once the setter returns, debugfs removal covers the whole operation and exit can no longer race with an untracked work item. Validation reproduced this kernel report: BUG: KASAN: slab-use-after-free in do_enable_set+0x113/0x2e0 Workqueue: events do_enable_set [bluetooth_6lowpan] The buggy address belongs to the object at ffff888109cb8000