Ad

CVE-2026-74285

HIGH CVSS 3.1: 8,8 EPSS 0.12%
Обновлено 17 августа 2026
Linux
Параметр Значение
CVSS 8,8 (HIGH)
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: net: остановить арендованный rxq перед удалением его поставщика памяти. netif_rxq_cleanup_unlease() удаляет поставщика памяти, который был устанавливается в физическую очередь приема посредством аренды очереди Netkit. Это в настоящее время отменяет сопоставления DMA провайдера перед остановкой физическая очередь: __netif_mp_uninstall_rxq(virt_rxq, p); /* Отмена отображения DMA */ __netif_mp_close_rxq(phys_rxq->dev, rxq_idx, p); /* остановка очереди */ Это инвертирует порядок, используемый обычными путями удаления (обычный отмена регистрации устройства и путь закрытия io_uring zcrx), которые останавливают очередь перед отзывом сопоставлений поставщика. Поскольку физическая очередь все еще жива, ее NAPI может продолжать потреблять записи net_iov из кэша распределения page_pool после __netif_mp_uninstall_rxq() уже очистил свой dma_addr, открытие окна для DMA устройства по устаревшему или нулевому адресу.

Исправьте это, поменяв местами два вызова, чтобы очередь была остановлена (и ее NAPI приостановлен) до удаления поставщика. Нет функционала регресс наблюдался при повторных запусках nk_qlease.py Самотестирование аппаратного обеспечения, которое проверяет путь удаления аренды; это было протестировано на эмуляции fbnic QEMU.

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

In the Linux kernel, the following vulnerability has been resolved: net: Stop leased rxq before uninstalling its memory provider netif_rxq_cleanup_unlease() tears down the memory provider that was installed on a physical RX queue through a netkit queue lease. It currently revokes the provider's DMA mappings before stopping the physical queue: __netif_mp_uninstall_rxq(virt_rxq, p); /* DMA unmap */ __netif_mp_close_rxq(phys_rxq->dev, rxq_idx, p); /* queue stop */ This inverts the ordering used by the regular teardown paths (normal device unregister and the io_uring zcrx close path), which stop the queue before revoking the provider's mappings. With the physical queue still live, its NAPI can keep consuming net_iov entries from the page_pool alloc cache after the __netif_mp_uninstall_rxq() has already cleared their dma_addr, opening a window for the device to DMA to a stale or zero address. Fix it by swapping the two calls so the queue is stopped (and its NAPI quiesced) before the provider is uninstalled. No functional regression was observed across repeated runs of the nk_qlease.py HW selftest, which exercises the lease teardown path; this was tested against fbnic QEMU emulation.

Характеристики атаки

Способ атаки
Локальный
Нужен локальный доступ
Сложность
Низкая
Легко эксплуатировать
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Высокое
Полная модификация данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1