CVE-2026-31395

NONE EPSS 0.02%
Обновлено 3 апреля 2026
Linux
Параметр Значение
Уязвимые версии 0 — 65535
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: bnxt_en: исправлен доступ к OOB в асинхронном обработчике событий DBG_BUF_PRODUCER. Обработчик ASYNC_EVENT_CMPL_EVENT_ID_DBG_BUF_PRODUCER в bnxt_async_event_process() использует поле типа, предоставляемое прошивкой. непосредственно как индекс в bp->bs_trace[] без проверки границ. Поле «тип» представляет собой 16-битное значение, извлеченное из завершения, сопоставленного с DMA. кольцевая память, которую сетевой адаптер записывает непосредственно в ОЗУ хоста.

Злонамеренный или скомпрометированная сетевая карта может предоставить любое значение от 0 до 65535, вызывая доступ за пределы кучи ядра. Затем вызов bnxt_bs_trace_check_wrap() разыменовывает bs_trace->magic_byte. и записывает в bs_trace->last_offset и bs_trace->wrapped, что приводит к повреждение памяти ядра или сбой. Исправьте это, добавив проверку границ и определив BNXT_TRACE_MAX как DBG_LOG_BUFFER_FLUSH_REQ_TYPE_ERR_QPC_TRACE + 1, чтобы охватить все текущие определенные типы трассировки прошивки (от 0x0 до 0xc).

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

In the Linux kernel, the following vulnerability has been resolved: bnxt_en: fix OOB access in DBG_BUF_PRODUCER async event handler The ASYNC_EVENT_CMPL_EVENT_ID_DBG_BUF_PRODUCER handler in bnxt_async_event_process() uses a firmware-supplied 'type' field directly as an index into bp->bs_trace[] without bounds validation. The 'type' field is a 16-bit value extracted from DMA-mapped completion ring memory that the NIC writes directly to host RAM. A malicious or compromised NIC can supply any value from 0 to 65535, causing an out-of-bounds access into kernel heap memory. The bnxt_bs_trace_check_wrap() call then dereferences bs_trace->magic_byte and writes to bs_trace->last_offset and bs_trace->wrapped, leading to kernel memory corruption or a crash. Fix by adding a bounds check and defining BNXT_TRACE_MAX as DBG_LOG_BUFFER_FLUSH_REQ_TYPE_ERR_QPC_TRACE + 1 to cover all currently defined firmware trace types (0x0 through 0xc).