Ad

CVE-2026-14366

MEDIUM CVSS 3.1: 6,4 EPSS 0.16%
Обновлено 1 сентября 2026
Zephyrproject
Параметр Значение
CVSS 6,4 (MEDIUM)
Тип уязвимости CWE-416 (Использование памяти после освобождения)
Поставщик Zephyrproject
Публичный эксплойт Нет

Обратный вызов передачи siwx91x_send() драйвера Silicon Labs SiWx917 WiFi в файле driver/wifi/siwx91x/siwx91x_wifi.c освобождает сетевой пакет, которым он не владеет. В пути Zephyr TX net_pkt принадлежит стеку L2/сети; драйвер заимствует его только для копирования байтов кадра в локальный net_buf. Перед исправлением, после передачи, siwx91x_send() дополнительно вызывала net_pkt_unref(pkt) для пакета, принадлежащего вызывающему абоненту, отбрасывая его последнюю ссылку и преждевременно возвращая его в общий пул пакетов.

Этот путь кода компилируется по умолчанию (CONFIG_WIFI_SILABS_SIWX91X_NET_STACK_NATIVE). Вызывающая сторона, ethernet_send() в subsys/net/l2/ethernet/ethernet.c, продолжает использовать пакет после возврата драйвера: он считывает net_pkt_get_len(pkt), обновляет статистику передачи, а затем выполняет свою собственную net_pkt_unref(pkt). Поскольку драйвер уже освободил пакет, это чтение с использованием после освобождения, за которым следует второе unref (двойное освобождение).

Когда одновременная сетевая активность повторно использует освобожденный слот между двумя unref, конечный unref уменьшает счетчик ссылок другого активного пакета и освобождает его, повреждая пул net_pkt, общий для путей приема и передачи. Дефект реализуется путем обычной передачи через встроенный стек Wi-Fi-интерфейс SiWx917, и соседний злоумышленник в той же сети Wi-Fi может инициировать передачу (например, эхо-ответы ARP или ICMP или TCP-квитирования) для управления маршрутом. Основное наблюдаемое воздействие — это потеря доступности (зависания передачи и сбои из-за повреждения пула) с зависимым от расы повреждением памяти пула сетевых буферов ядра.

Исправление удаляет ошибочный net_pkt_unref(pkt) из siwx91x_send(); Unref пути приема драйвера, который правильно освобождает пакет, выделенный самим драйвером, не затрагивается.

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

The Silicon Labs SiWx917 WiFi driver's transmit callback siwx91x_send() in drivers/wifi/siwx91x/siwx91x_wifi.c frees a network packet it does not own. In the Zephyr TX path the net_pkt is owned by the L2/networking stack; the driver only borrows it to copy the frame bytes into a local net_buf. Before the fix, after transmitting, siwx91x_send() additionally called net_pkt_unref(pkt) on the caller-owned packet, dropping its last reference and returning it to the shared packet pool prematurely. This code path is compiled in by default (CONFIG_WIFI_SILABS_SIWX91X_NET_STACK_NATIVE). The caller, ethernet_send() in subsys/net/l2/ethernet/ethernet.c, keeps using the packet after the driver returns: it reads net_pkt_get_len(pkt), updates TX statistics, and then performs its own net_pkt_unref(pkt). Because the driver already released the packet, these are use-after-free reads followed by a second unref (a double free). When concurrent network activity recycles the freed slab slot between the two unrefs, the trailing unref decrements a different, live packet's reference count and frees it, corrupting the net_pkt pool shared by both the receive and transmit paths. The defect is exercised by ordinary transmission over the native-stack SiWx917 WiFi interface, and an adjacent attacker on the same WiFi network can induce transmissions (for example ARP or ICMP echo replies, or TCP handshakes) to drive the path. The primary observable impact is loss of availability (transmit hangs and crashes from pool corruption), with race-dependent memory corruption of the kernel networking buffer pool. The fix removes the erroneous net_pkt_unref(pkt) from siwx91x_send(); the driver's receive-path unref, which correctly frees a packet the driver itself allocated, is unaffected.

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

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

Последствия

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

Строка CVSS v3.1

Уязвимые продукты

zephyrproject:zephyr