CVE-2026-97570 в Linux Kernel: out-of-bounds access в bnxt_en и защита от kernel panic

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

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


В драйвере сетевого контроллера Broadcom NetXtreme (bnxt_en) обнаружена ошибка выхода за границы массива rx_tpa. При определённых значениях firmware TPA ID индексация массива сходит за пределы выделенной области, что приводит к обращению к невалидному адресу и падению ядра во время загрузки или при обработке сетевого трафика. Исправление опубликовано в stable-ветке Linux Kernel и требует обновления системы.

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


Уязвимость связана с выходом за границы массива в драйвере сетевой подсистемы Linux Kernel. Ошибка возникает из-за несовпадения между количеством TPA, объявленным firmware, и размером выделенного массива rx_tpa.

  • Тип ошибки: out-of-bounds read/write в драйвере bnxt_en (Broadcom NetXtreme)
  • CVSS v3.1: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H — оценка 8.1, HIGH
  • Вектор атаки: удалённый доступ без привилегий и взаимодействия с пользователем; сложность высокая (AC:H)
  • Факт эксплуатации: в источниках не подтверждено наличие публичных эксплойтов или реальных атак
  • EPSS: 0,443% (процентиль 36,04%) — низкая вероятность массового использования в ближайшие три месяца

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


Затронут драйвер bnxt_en в Linux Kernel, который управляет сетевыми контроллерами Broadcom NetXtreme.

  • Компонент: drivers/net/ethernet/broadcom/bnxt/bnxt.c и bnxt.h
  • Условие уязвимости: использование NIC с firmware, объявляющим 32 или более concurrent TPAs (подтверждено для Broadcom 57608 с firmware version 233)
  • Версии ядра: все версии Linux Kernel, содержащие драйвер bnxt_en без исправления из commit c0aceaf65b70b3c000e70dd867f3a673015f24ca (upstream) и 05cf64d171772c65bcdee76ee7163c35d9f55a89 (stable)
  • Платформы: системы с установленным драйвером bnxt_en, использующие сетевые карты Broadcom NetXtreme серии 57xxx

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


Ошибка возникает из-за некорректной привязки software TPA ID к hardware TPA ID в функции bnxt_alloc_agg_idx.

Firmware поддерживает до 1024 concurrent TPAs, поэтому hardware TPA ID находится в диапазоне 0..1023. Функция bnxt_alloc_agg_idx должна была «оборачивать» этот ID в software ID для индексации массива rxr->rx_tpa. Однако при определённых значениях firmware (например, 32 concurrent TPAs на 57608 с firmware version 233) software ID мог превышать 31.

Массив rx_tpa выделялся на размер bp->max_tpa, который для этого случая равнялся 32. При индексации значением больше 31 код обращался к памяти за пределами массива: tpa_info = &rxr->rx_tpa[agg_id]. Последующие записи в tpa_info также выходили за границы выделенной области.

Исправление добавляет поле max_tpa_roundup_size, равное ближайшей степени двойки от bp->max_tpa, и использует его для маскирования TPA ID. Это гарантирует, что индекс всегда будет в пределах выделенного массива.

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


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

Атака возможна при обработке входящего сетевого трафика или во время загрузки системы. При определённых условиях firmware TPA ID может привести к тому, что software ID из bnxt_alloc_agg_idx превысит размер массива rx_tpa. Код обращается к невалидному адресу и выполняет запись в память вне выделенной области.

В описании CVE приводится конкретный сценарий: crash at boot на 57608 с firmware version 233. Stack trace показывает, что сбой происходит в bnxt_rx_pkt при обработке входящего пакета (IRQ context). Обращение к нулевому указателю или невалидному адресу вызывает general protection fault и остановку ядра.

Поскольку ошибка затрагивает драйвер сетевой подсистемы, она может быть триггерена удалённо через сеть при наличии подключённой уязвимой NIC. Для воспроизведения достаточно направить трафик на интерфейс с соответствующим firmware.

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


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

  • Установленный драйвер bnxt_en: система должна использовать сетевую карту Broadcom NetXtreme с драйвером bnxt_en в ядре Linux
  • Соответствующий firmware: NIC должен иметь firmware, объявляющий 32 или более concurrent TPAs (подтверждено для 57608 с firmware version 233)
  • Обработка сетевого трафика: требуется входящий сетевой трафик на интерфейс с уязвимой NIC, либо загрузка системы с подключённой картой
  • Отсутствие исправления: ядро должно не содержать фикс из commit c0aceaf65b70b3c000e70dd867f3a673015f24ca или его stable-версии 05cf64d171772c65bcdee76ee7163c35d9f55a89
  • Доступ к системе: для удалённой эксплуатации достаточно сетевого доступа к интерфейсу с уязвимой NIC; локальная эксплуатация возможна через загрузку системы

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


Сценарий атаки основан на обработке сетевого трафика уязвимым драйвером bnxt_en.

Атакующий направляет сетевой трафик на интерфейс с подключённой Broadcom NetXtreme NIC, использующей firmware version 233 или аналогичный. Драйвер обрабатывает входящие пакеты в IRQ context и вызывает bnxt_rx_pkt. При определённых значениях TPA ID функция bnxt_alloc_agg_idx возвращает software ID больше 31.

Код обращается к памяти за пределами массива rx_tpa через строку tpa_info = &rxr->rx_tpa[agg_id]. Последующие записи в память вызывают out-of-bounds write. В описанном случае это приводит к обращению к нулевому указателю и kernel panic с message «Oops: general protection fault, kernel NULL pointer dereference 0x8: 0000».

После падения ядра система становится недоступна. Для восстановления требуется перезагрузка или восстановление из резервной копии/восстановления системы.

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


В предоставленных источниках нет информации о публичных эксплойтах, PoC-коде или подтверждённой эксплуатации CVE-2026-97570.

Исправление опубликовано в stable-ветке Linux Kernel с commit 05cf64d171772c65bcdee76ee7163c35d9f55a89 (stable) и c0aceaf65b70b3c000e70dd867f3a673015f24ca (upstream). Описание CVE содержит детальный технический разбор ошибки, stack trace и diff исправления, что позволяет понять механизм уязвимости.

Отсутствие сведений о публичных эксплойтах не означает их отсутствие. Для проверки актуального статуса рекомендуется мониторинг mailing list linux-cve-announce и отслеживание обновлений в ядре stable-ветки.

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


Специфичные индикаторы компрометации для CVE-2026-97570 не подтверждены источниками. Ниже приведены общие точки контроля, которые могут указывать на наличие проблемы или её последствия:

  • Kernel panic с message: «Oops: general protection fault, kernel NULL pointer dereference 0x8: 0000» в логах ядра (dmesg, /var/log/kern.log)
  • Stack trace с bnxt_rx_pkt: наличие вызова bnxt_rx_pkt в call trace при обработке сетевого трафика
  • Сбой сети: внезапное прекращение работы сетевого интерфейса с подключённой Broadcom NetXtreme NIC
  • Повторяющиеся перезагрузки: частые kernel panic или зависания системы после загрузки с подключённой уязвимой NIC
  • Логи драйвера bnxt_en: предупреждения о невалидных TPA ID или ошибках аллокации памяти в сетевом подсистеме

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


Для обнаружения CVE-2026-97570 рекомендуется проверить версию ядра и наличие исправления.

  • Проверка версии ядра: выполните uname -r или uname -a для получения текущей версии ядра Linux
  • Поиск в логах: используйте grep -i "bnxt" /var/log/kern.log или dmesg | grep -i "bnxt" для поиска сообщений о сбоях драйвера bnxt_en
  • Проверка stack trace: ищите в dmesg строки «Oops: general protection fault» с наличием bnxt_rx_pkt в call trace
  • Сравнение с stable-веткой: проверьте, содержит ли ваше ядро commit 05cf64d171772c65bcdee76ee7163c35d9f55a89 или более новый
  • Проверка firmware: убедитесь, что firmware NIC не объявляет 32 или более concurrent TPAs при отсутствии исправления

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


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

Bash:
uname -r

Эта команда выводит краткую версию ядра. Для полной информации выполните:

Bash:
uname -a

Или проверьте через файл /proc/version:

Bash:
cat /proc/version

После получения версии ядра сравните её с release notes stable-ветки Linux Kernel, чтобы определить, содержит ли система исправление из commit 05cf64d171772c65bcdee76ee7163c35d9f55a89. Если версия ядра ниже версии, содержащей фикс, система уязвима.

Для проверки наличия драйвера bnxt_en выполните:

Bash:
lsmod | grep bnxt

Если модуль не загружен, но NIC подключена, проверьте наличие устройства через lspci | grep -i broadcom.

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


Исправление CVE-2026-97570 доступно в stable-ветке Linux Kernel.

  • Обновление ядра: установите версию Linux Kernel, содержащую commit 05cf64d171772c65bcdee7163c35d9f55a89 (stable) или более новую
  • Обновление через пакетный менеджер: используйте стандартные механизмы обновления вашей дистрибутива Linux (apt, yum, dnf, pacman и т.д.)
  • Проверка после обновления: выполните uname -r и убедитесь, что версия ядра содержит исправление
  • Перезагрузка системы: после обновления ядра требуется перезагрузка для применения изменений
  • Мониторинг: следите за обновлением stable-ветки Linux Kernel на наличие новых фиксов

Коммит исправления: bnxt_en: Bound SW TPA IDs to prevent crashes

Upstream commit: bnxt_en: Bound SW TPA IDs to prevent crashes

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


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

  • Отключить уязвимую NIC: если система использует несколько сетевых интерфейсов, отключите интерфейс с Broadcom NetXtreme NIC через ip link set <interface> down или в BIOS/UEFI
  • Ограничить входящий трафик: используйте firewall для блокировки ненужного сетевого трафика на уязвимый интерфейс (например, iptables или nftables)
  • Отключить TPA: если возможно через параметры ядра или firmware, отключите поддержку TPA для данной NIC
  • Регулярные бэкапы: создавайте резервные копии данных и системы до обновления ядра
  • Мониторинг логов: отслеживайте dmesg и системные логи на появление сообщений о сбоях bnxt_en

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

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


После обновления ядра выполните следующие проверки:

  • Проверка версии: выполните uname -r и убедитесь, что версия ядра содержит исправление
  • Проверка commit: используйте git log --oneline | grep 05cf64d171772c65bcdee76ee7163c35d9f55a89 в исходном коде ядра, если доступно
  • Тестирование сети: отправьте тестовый сетевой трафик на интерфейс с уязвимой NIC и убедитесь, что kernel panic не воспроизводится
  • Проверка логов: выполните dmesg | grep -i "bnxt" после перезагрузки и убедитесь, что нет новых ошибок
  • Мониторинг: наблюдайте за системой в течение 24–48 часов для подтверждения стабильности работы драйвера bnxt_en

Вывод​


CVE-2026-97570 — это ошибка out-of-bounds access в драйвере bnxt_en Linux Kernel, которая может привести к kernel panic при обработке сетевого трафика или загрузке системы. Уязвимость затрагивает системы с сетевыми картами Broadcom NetXtreme и firmware, объявляющим 32 или более concurrent TPAs.

Исправление уже доступно в stable-ветке Linux Kernel. Рекомендуется обновить ядро до версии, содержащей commit 05cf64d171772c65bcdee7163c35d9f55a89, и проверить работоспособность сетевого интерфейса после обновления.

Отсутствие публичных эксплойтов не означает, что уязвимость безопасна. При наличии подключённой уязвимой NIC и соответствующего firmware сбой ядра может быть триггерен удалённо через сетевой трафик.

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


  1. NVD — CVE-2026-97570
  2. FIRST EPSS — CVE-2026-97570
  3. bnxt_en: Bound SW TPA IDs to prevent crashes - kernel/git/stable/linux.git - Linux kernel stable tree
  4. bnxt_en: Bound SW TPA IDs to prevent crashes - kernel/git/stable/linux.git - Linux kernel stable tree
  5. CVEs — The Linux Kernel documentation

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


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