CVE-2026-64586 в Linux Kernel: use-after-free в brcmfmac при удалении устройства

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

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


В драйвере brcmfmac ядра Linux обнаружен дефект жизненного цикла асинхронной задачи bus_reset. При удалении устройства память структуры драйвера освобождается без отмены запланированной работы, что приводит к обращению к освобождённой памяти.

Проблема затрагивает контроллеры Broadcom, подключённые по PCIe, SDIO и USB. В статье описана механика гонки, условия эксплуатации и порядок проверки исправления.

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


Риск связан с нарушением порядка освобождения ресурсов и завершения асинхронной работы в драйвере Wi-Fi Broadcom. Если колбэк bus_reset выполняется после освобождения структуры drvr, возникает обращение к невалидной памяти, что может привести к падению ядра или компрометации системы.

  • Тип ошибки: Use-After-Free (UAF) в контексте управления асинхронными задачами.
  • 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. Оценщик указывает на локальный доступ (Adjacent) и отсутствие необходимости в привилегиях.
  • EPSS: 0,25% (0.00249). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая.
  • Эксплуатация: Публичные данные о подтверждённой эксплуатации в реальных атаках отсутствуют.
  • Обнаружение: Дефект найден с помощью внутреннего инструмента статического анализа.

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


Уязвимость затрагивает ядро Linux, в котором включён драйвер brcmfmac для контроллеров Broadcom. Проблема распространяется на все варианты подключения, использующие этот драйвер: PCIe, SDIO и USB.

  • Компонент: drivers/net/wireless/broadcom/brcm80211/brcmfmac.
  • Шины: PCIe, SDIO, USB.
  • Версии: Точные номера версий ядра, в которых присутствует уязвимость, не раскрыты в предоставленных источниках. Известно, что проблема была введена коммитом 4684997d9eea и исправлена в серии патчей, опубликованных в 2026 году.

Для определения подверженности системы необходимо проверить наличие драйвера и версию ядра, сверив её с официальными списками исправлений дистрибутива.

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


Причина дефекта кроется в отсутствии синхронизации между асинхронной задачей bus_reset и путём освобождения ресурсов драйвера. Функции brcmf_fw_crashed() и запись в debugfs reset планируют выполнение drvr->bus_reset. Колбэк этой задачи восстанавливает структуру drvr через container_of() и обращается к ней.

Путь удаления устройства (brcmf_free -> wiphy_free) освобождает память drvr, не дожидаясь завершения или отмены запланированной задачи. В результате колбэк bus_reset может быть отложен или выполняться в момент, когда структура drvr уже освобождена. Это приводит к обращению к освобождённой памяти (Use-After-Free).

Отмена задачи не могла быть реализована в brcmf_detach() или brcmf_free(), так как колбэк задачи вызывает эти же функции через операции шины, что привело бы к взаимной блокировке (deadlock).

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


Атакующий должен инициировать сценарий, при котором задача bus_reset будет запланирована или выполнена в момент удаления устройства. Триггером может стать сбой прошивки (firmware crash) или ручная запись в debugfs.

  • Инициация сброса: Прошивка контроллера Broadcom останавливается или падает. Функция brcmf_fw_crashed() срабатывает и планирует задачу bus_reset.
  • Начало удаления: Одновременно с этим или сразу после запуска задачи начинается процесс удаления устройства (например, физическое отключение или сбой шины).
  • Гонка (Race Condition): Путь удаления освобождает структуру drvr. Если задача bus_reset ещё не завершила выполнение или только что была запланирована, её колбэк обращается к уже освобождённой памяти.
  • Последствия: Обращение к невалидной памяти может привести к повреждению данных, падению ядра (kernel panic) или, в худшем случае, к выполнению кода в контексте ядра.

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


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

  • Наличие оборудования: Система должна использовать Wi-Fi контроллер Broadcom, поддерживаемый драйвером brcmfmac.
  • Доступ к шине: Уязвимость проявляется при работе с шинами PCIe, SDIO или USB, где реализован механизм сброса шины.
  • Состояние прошивки: Требуется сбой или остановка прошивки контроллера, либо доступ к записи в debugfs для ручного инициирования сброса.
  • Временное окно: Атакующий должен попасть в узкое временное окно между освобождением памяти и выполнением колбэка задачи.

Так как вектор CVSS указывает на AV:A (Adjacent), атакующий, вероятно, должен находиться в локальной сети или иметь физический доступ к устройству для инициирования сброса прошивки.

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


Сценарий атаки строится на эксплуатации гонки при удалении устройства. Атакующий, имеющий доступ к локальной сети, может попытаться вызвать сбой прошивки Wi-Fi контроллера Broadcom.

Например, путем отправки специально сформированных пакетов или использования уязвимости в протоколе. После срыва прошивки драйвер brcmfmac планирует задачу bus_reset для восстановления связи.

Если в этот момент устройство начинает удаляться (например, из-за нестабильности шины или действий атакующего), память драйвера освобождается. Задача bus_reset, продолжая выполнение, обращается к освобождённой структуре drvr. Это приводит к неопределенному поведению ядра.

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

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


На момент публикации данных публичный эксплойт (PoC) для CVE-2026-64586 не опубликован. В источниках указано, что проблема была обнаружена с помощью внутреннего инструмента статического анализа (in-house static analysis tool).

Отсутствие публичного эксплойта не означает, что атака невозможна. Механика уязвимости (Use-After-Free) хорошо изучена, и разработчики могут создать эксплойт на основе анализа кода патча. Однако подтверждённых случаев эксплуатации в реальных атаках (in-the-wild) в предоставленных данных нет.

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


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

  • Сбои прошивки: Частые сообщения в журнале ядра о падении прошивки Broadcom (Firmware has halted or crashed).
  • Паник ядра: Записи в dmesg или /var/log/kern.log о kernel panic, segfault или oops в модуле brcmfmac.
  • Аномалии шины: Сообщения об ошибках PCIe, SDIO или USB, связанные с контроллером Broadcom.

Эти признаки неспецифичны и могут быть вызваны аппаратными сбоями или другими дефектами драйвера. Их наличие требует дополнительной проверки, но не является доказательством атаки.

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


Обнаружение эксплуатации или наличия уязвимости требует мониторинга состояния драйвера и ядра.

  • Мониторинг журналов: Настройка алертов на сообщения brcmfmac в dmesg и системных логах. Особое внимание следует уделять сообщениям о сбросах шины и падении прошивки.
  • Анализ стабильности: Отслеживание частоты перезагрузок или зависаний Wi-Fi интерфейса. Нестабильная работа контроллера может указывать на срабатывание уязвимости.
  • Проверка версии: Регулярная сверка версии ядра с официальными списками исправлений. Если ядро не содержит патчи, система считается уязвимой.

Так как уязвимость эксплуатируется локально (Adjacent), сетевые IDS/IPS не смогут её обнаружить. Основной упор делается на хост-мониторинг и управление обновлениями.

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


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

Bash:
# Проверка версии ядра
uname -r

# Подробная информация о ядре
uname -a

# Информация из /proc
cat /proc/version

# Проверка загрузки модуля brcmfmac
lsmod | grep brcmfmac

# Проверка наличия устройств Broadcom
lspci | grep -i broadcom
lsusb | grep -i broadcom

Если модуль brcmfmac загружен, а версия ядра не включает исправления (см. раздел «Исправление»), система подвержена риску. Точные номера версий ядра, в которых устранена уязвимость, необходимо уточнять в документации вашего дистрибутива Linux.

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


Единственным надежным способом устранения уязвимости является обновление ядра Linux до версии, содержащей соответствующие патчи. Патч был принят в основную ветку и стабильные ветки ядра.

  • Обновление ядра: Используйте штатные средства обновления вашего дистрибутива (apt, yum, dnf, pacman и т.д.) для установки последней версии ядра.
  • Проверка патчей: Убедитесь, что ядро содержит коммиты, исправляющие проблему в brcmfmac. В официальных источниках указаны коммиты, такие как 02d378828af8 и другие, которые вносят изменения в файлы core.c, pcie.c, sdio.c и usb.c.
  • Перезагрузка: После обновления ядра требуется перезагрузка системы для применения изменений.

Не рекомендуется применять ручные патчи к исходникам ядра без глубокого понимания последствий. Используйте официальные пакеты дистрибутива.

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


Пока обновление ядра не установлено, можно применить временные меры для снижения риска.

  • Отключение Wi-Fi: Если Wi-Fi не критичен, отключите интерфейс или выгрузите модуль brcmfmac.

    Bash:
    # Выгрузка модуля (если возможно)
    sudo rmmod brcmfmac
  • Ограничение доступа: Ограничьте физический и сетевой доступ к устройствам, использующим контроллеры Broadcom. Так как вектор атаки AV:A, атакующий должен быть в локальной сети или иметь физический доступ.
  • Мониторинг: Усиленный мониторинг журналов ядра на предмет сбоев прошивки и падений драйвера.

Эти меры не устраняют уязвимость, но снижают вероятность её эксплуатации. Они не заменяют обновление ядра.

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


После обновления ядра необходимо убедиться, что уязвимость устранена.

  • Проверка версии: Убедитесь, что система работает на новой версии ядра.

    Bash:
    uname -r
  • Проверка патчей: Сверьте версию ядра с официальными списками исправлений. Убедитесь, что в ядре присутствуют изменения, связанные с brcmfmac и bus_reset.
  • Функциональное тестирование: Проверьте работоспособность Wi-Fi интерфейса. Убедитесь, что драйвер корректно загружается и работает.
  • Мониторинг: Продолжайте наблюдать за стабильностью системы в течение нескольких дней. Отсутствие сбоев прошивки и падений драйвера является косвенным подтверждением исправления.

Если после обновления наблюдаются сбои, обратитесь к документации дистрибутива или сообществу разработчиков.

Вывод​


CVE-2026-64586 представляет собой серьезную уязвимость в драйвере brcmfmac, способную привести к падению ядра или компрометации системы. Риск связан с обращением к освобождённой памяти при гонке между сбросом шины и удалением устройства. Хотя публичный эксплойт отсутствует, механика дефекта позволяет предположить возможность эксплуатации.

Администраторам систем с контроллерами Broadcom рекомендуется срочно обновить ядро до последней версии. До применения патча следует ограничить доступ к устройствам и мониторить стабильность драйвера. Уязвимость подчеркивает важность своевременного обновления ядра и мониторинга состояния драйверов.

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


  1. NVD — CVE-2026-64586
  2. FIRST EPSS — CVE-2026-64586
  3. wifi: brcmfmac: drain bus_reset work on device removal - kernel/git/stable/linux.git - Linux kernel stable tree
  4. wifi: brcmfmac: drain bus_reset work on device removal - kernel/git/stable/linux.git - Linux kernel stable tree
  5. wifi: brcmfmac: drain bus_reset work on device removal - kernel/git/stable/linux.git - Linux kernel stable tree
  6. wifi: brcmfmac: drain bus_reset work on device removal - kernel/git/stable/linux.git - Linux kernel stable tree
  7. wifi: brcmfmac: drain bus_reset work on device removal - kernel/git/stable/linux.git - Linux kernel stable tree
  8. wifi: brcmfmac: drain bus_reset work on device removal - kernel/git/stable/linux.git - Linux kernel stable tree
  9. wifi: brcmfmac: drain bus_reset work on device removal - kernel/git/stable/linux.git - Linux kernel stable tree
  10. wifi: brcmfmac: drain bus_reset work on device removal - kernel/git/stable/linux.git - Linux kernel stable tree

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


  • 11.08.2026 — Опубликована первая версия материала.
  • 26.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ