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 сбой ядра может быть триггерен удалённо через сетевой трафик.
Официальные источники
- NVD — CVE-2026-97570
- FIRST EPSS — CVE-2026-97570
- bnxt_en: Bound SW TPA IDs to prevent crashes - kernel/git/stable/linux.git - Linux kernel stable tree
- bnxt_en: Bound SW TPA IDs to prevent crashes - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 28.09.2026 — Опубликована первая версия материала.
