CVE-2026-80914 в Linux Kernel: use-after-free в Bluetooth ISO

CVE: CVE-2026-80914
Продукт: Linux Kernel
Дата публикации: 09.09.2026
Критичность: HIGH
CVSS: 8.8 (3.1)
EPSS: 0,22%; процентиль 12,29%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В стеке Bluetooth ISO ядра Linux обнаружена уязвимость, позволяющая нарушителю из локальной сети вызвать обращение к освобождённой памяти. Ошибка возникает из-за гонки состояний при одновременном закрытии listener-сокета и обработке нового соединения. Материал описывает техническую механику бага, условия эксплуатации и способы проверки наличия исправления в ядре.

Основные характеристики​


Уязвимость относится к классу use-after-free в подсистеме Bluetooth ISO. При успешной эксплуатации нарушитель из локальной сети может повредить память ядра, что потенциально ведёт к выполнению кода или отказу в обслуживании.

  • CVSS 3.1: 8.8 (HIGH). Вектор: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Высокая оценка обусловлена полным воздействием на конфиденциальность, целостность и доступность при локальном векторе атаки.
  • EPSS: 0,22% (процентиль 12,29%). Метрика отражает низкую вероятность публичной эксплуатации в ближайшие 30 дней.
  • Тип ошибки: Обращение к освобождённой памяти (use-after-free) из-за нарушения порядка управления ссылками на сокет.
  • Вектор атаки: Локальная сеть (Adjacent Network). Требуется физическая или радиочастотная близость к устройству, но не локальный доступ к ОС.
  • Исправление: Патч добавляет повторную проверку состояния сокета после блокировки, предотвращая создание дочернего соединения на основе освобождённого объекта.

Какие продукты и версии затронуты​


Уязвимость затрагивает ядра Linux, содержащие код обработки Bluetooth ISO, введённый в коммите ccf74f2390d60. Точный перечень уязвимых версий зависит от дистрибутива и включённых патчей.

  • Компонент: net/bluetooth/iso.c. Функция iso_conn_ready() не проверяет валидность listener-сокета после получения ссылки.
  • Исправляющий коммит (mainline): 560bef609fa5992745929e8d7d458b9d88dd2830.
  • Backports в stable-ветки: 03288b7447c9, 2387cd06a2c0, 49fd7116f76b.
  • Дистрибутивы: Информация о конкретных версиях пакетов отсутствует в предоставленных источниках. Необходимо сверяться с официальными уведомлениями вендоров.

Причина уязвимости​


Причина ошибки — нарушение порядка управления ссылками на сокет в функции iso_conn_ready(). Функция iso_get_sock() получает ссылку на listener-сокет, но не гарантирует, что объект останется валидным до конца выполнения.

Если listener-сокет закрывается в другом потоке между получением ссылки и блокировкой сокета, ссылка может стать последней. При её освобождении память сокета освобождается. Однако дочерний сокет уже связан с этим «освобождённым» родителем.

При последующем отключении дочернего соединения вызов iso_chan_del() обращается к висячей указателю, вызывая use-after-free. Исправление копирует подход из коммита 0d255e63fcf3: после блокировки сокета проверяется, что он всё ещё находится в состоянии BT_LISTEN и не помечен как SOCK_ZAPPED. Если состояние изменилось, функция завершается без создания дочернего сокета.

Как работает атака​


Атакующий из локальной сети инициирует подключение Bluetooth ISO к устройству, слушающему на определённом канале. В момент, когда ядро обрабатывает готовность соединения (iso_conn_ready), атакующий или локальный процесс закрывает listener-сокет.

Гонка состояний возникает между вызовом iso_get_sock() и lock_sock(). Если сокет закрывается в этот интервал, ядро продолжает создавать дочерний сокет, связывая его с уже освобождённой структурой родителя.

При последующем разрыве соединения ядро обращается к освобождённой памяти через bt_accept_unlink() и parent->***(), что приводит к повреждению памяти или падению ядра. Эксплуатация требует точного тайминга, но при успешном срабатывании позволяет нарушителю выполнить код в контексте ядра или вызвать отказ в обслуживании.

Условия успешной эксплуатации​


Для успешной эксплуатации уязвимости необходимо соблюдение следующих условий:

  • Доступ к локальной сети: Атакующий должен находиться в радиусе действия Bluetooth-устройства (AV:A).
  • Поддержка Bluetooth ISO: Ядро должно быть скомпилировано с поддержкой протокола ISO (BTPROTO_ISO).
  • Активный listener-сокет: На устройстве должен работать процесс, слушающий на ISO-канале, который можно закрыть в нужный момент.
  • Отсутствие патча: В ядре не должно быть исправления, добавляющего проверку состояния сокета после lock_sock().

Возможный сценарий атаки​


Сценарий атаки предполагает, что атакующий находится в локальной сети и имеет доступ к Bluetooth-устройству жертвы. Жертва использует приложение, работающее с Bluetooth ISO (например, для передачи аудио или данных).

Атакующий инициирует подключение к ISO-каналу. В момент, когда ядро обрабатывает запрос и вызывает iso_conn_ready(), атакующий или локальный процесс закрывает listener-сокет.

Из-за гонки состояний ядро не замечает закрытия и создаёт дочерний сокет, связанный с освобождённой памятью. При последующем отключении соединения ядро обращается к висячей указателю, что приводит к use-after-free. Атакующий может использовать это для выполнения кода в ядре или вызова паники.

Есть ли публичный эксплойт​


Публичные данные о готовых эксплоитах или PoC для CVE-2026-80914 в предоставленных источниках отсутствуют. Официальные коммиты содержат только описание исправления и технический анализ бага.

Отсутствие публичного эксплойта не означает, что уязвимость не может быть эксплуатирована. Учитывая механику гонки состояний и доступность Bluetooth-интерфейса, создание PoC технически возможно. Рекомендуется относиться к уязвимости как к потенциально эксплуатируемой, особенно в средах с высоким уровнем доверия к локальной сети.

Признаки эксплуатации​


Специфичные индикаторы компрометации (IOC) для этой уязвимости не опубликованы. Обращение к освобождённой памяти в ядре может проявляться как неспецифичные признаки:

  • Паника ядра (Kernel Panic): Случайные падения системы при работе с Bluetooth-устройствами.
  • Аномальные логи Bluetooth: Записи в dmesg или системном журнале об ошибках в модуле btiso или bluetooth.
  • Неожиданные разрывы соединений: Частые обрывы ISO-соединений без видимых причин.

Эти признаки не являются уникальными для CVE-2026-80914 и могут указывать на другие проблемы с Bluetooth-стекком.

Как обнаружить атаку​


Обнаружение атаки затруднено из-за отсутствия специфичных сигнатур. Рекомендуется использовать следующие методы:

  • Мониторинг логов: Отслеживайте записи в dmesg и journalctl на наличие ошибок, связанных с btiso, iso_conn_ready или use-after-free.
  • Аудит Bluetooth-активности: Фиксируйте попытки подключения к ISO-каналам и их разрывы. Аномальная частота подключений и разрывов может указывать на эксплуатацию.
  • Использование инструментов отладки: Включите CONFIG_DEBUG_KOBJECT и CONFIG_SLUB_DEBUG для детекции обращений к освобождённой памяти в тестовых средах.

В продакшене эти методы могут быть ресурсоёмкими, поэтому приоритет отдаётся предотвращению через обновление ядра.

Как проверить свою версию​


Для проверки версии ядра и наличия патча используйте следующие команды:

Bash:
uname -r
uname -a
cat /proc/version

Чтобы проверить, включён ли патч, используйте git в исходниках ядра или проверьте наличие коммитов в вашем дистрибутиве:

Bash:
git log --oneline | grep -E "03288b7447c9|2387cd06a2c0|49fd7116f76b|560bef609fa5"

Если коммиты отсутствуют, ядро уязвимо. Для бинарных пакетов обратитесь к базе данных уязвимостей вашего дистрибутива.

Исправление​


Единственный надёжный способ устранения уязвимости — обновление ядра до версии, содержащей патч.

  • Оригинальный патч: Коммит 560bef609fa5992745929e8d7d458b9d88dd2830 в mainline.
  • Stable-ветки: Backports доступны в коммитах 03288b7447c9, 2387cd06a2c0, 49fd7116f76b.
  • Дистрибутивы: Обновите ядро через штатные средства управления пакетами. Убедитесь, что версия ядра включает указанные коммиты.

Не используйте cherry-pick отдельных патчей без полного обновления, так как ядро тестируется как единое целое.

Временные меры защиты​


Пока обновление ядра не установлено, можно снизить риск следующими мерами:

  • Отключение Bluetooth: Если Bluetooth не используется, отключите адаптер или модуль bluetooth.
  • Ограничение доступа к ISO-каналам: Настройте политики, запрещающие использование Bluetooth ISO для критических приложений.
  • Изоляция устройств: Разместите устройства, использующие Bluetooth ISO, в изолированной сети с ограниченным доступом.

Эти меры не устраняют уязвимость, но снижают вероятность успешной атаки.

Как проверить устранение уязвимости​


После обновления ядра проверьте, что патч применён:

  1. Перезагрузите систему с новым ядром.
  2. Выполните uname -r и убедитесь, что загружена новая версия.
  3. Проверьте наличие коммитов в исходниках или используйте git log в дереве ядра.
  4. Протестируйте работу Bluetooth ISO, убедившись, что соединения устанавливаются и разрываются без ошибок в логах.

Если ошибки use-after-free в dmesg не появляются, исправление работает.

Вывод​


CVE-2026-80914 — серьёзная уязвимость в Bluetooth-стеке Linux, позволяющая нарушителю из локальной сети вызвать обращение к освобождённой памяти. Механизм атаки основан на гонке состояний при управлении сокетами ISO.

Обновление ядра до версии с патчем является обязательным. До обновления рекомендуется ограничить использование Bluetooth ISO и изолировать уязвимые устройства.

Официальные источники​


  1. NVD — CVE-2026-80914
  2. FIRST EPSS — CVE-2026-80914
  3. Bluetooth: ISO: fix use-after-free of listener socket in iso_conn_ready - kernel/git/stable/linux.git - Linux kernel stable tree
  4. Bluetooth: ISO: fix use-after-free of listener socket in iso_conn_ready - kernel/git/stable/linux.git - Linux kernel stable tree
  5. Bluetooth: ISO: fix use-after-free of listener socket in iso_conn_ready - kernel/git/stable/linux.git - Linux kernel stable tree
  6. Bluetooth: ISO: fix use-after-free of listener socket in iso_conn_ready - kernel/git/stable/linux.git - Linux kernel stable tree
  7. CVEs — The Linux Kernel documentation

История обновлений статьи​


  • 11.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ