CVE-2026-14697 in Zephyr
Сводка
по VulDB • 31.08.2026
В функции `net_ipv6_send_ns()` в файле `subsys/net/ip/ipv6_nbr.c` выделяется сетевой пакет (`net_pkt`) для передачи Neighbor Solicitation (запроса соседа). При вызове этой функции с ожидающим отправкой данным, привязанным к нераспознанному соседу, и при условии, что очередь ожидания (`pending_queue`) этого уже непустая (т.е. запрос NS уже находится в процессе отправки), функция добавляет пакет данных и преждевременно завершает работу, никогда не отправляя NS через `net_send_data()` и не освобождая его с помощью `net_pkt_unref()`. Только что выделенный сетевой пакет для NS и прикрепленные к нему буферы передачи (TX) удерживаются только локальной переменной и постоянно утекают, никогда не возвращаясь в пул ресурсов, ограниченный параметрами конфигурации `CONFIG_NET_PKT_TX_COUNT` / `CONFIG_NET_BUF_TX_COUNT`.
Утечка происходит на стандартном пути отправки IPv6: функция `net_ipv6_prepare_for_send()` (вызываемая из `net_if.c`) вызывает `net_ipv6_send_ns()` для любого исходящего или пересылаемого пакета IPv6, следующий узел назначения которого еще не записан в кэше соседей. Атакующий, находящийся в той же подсети (on-link), может детерминировано спровоцировать эту ситуацию, отправив пакетную атаку запросов (например, ICMPv6 echo requests или UDP-датаграммы), все из которых имеют поддельный исходный адрес несуществующего узла в локальной сети: узел генерирует ответ на каждый; первый ответ ставит NS в очередь ожидания, а каждый последующий ответ в течение примерно трехсекундного окна разрешения состояния INCOMPLETE проходит по ветке утечки и приводит к потере одного TX-пакета. Узлы с настроенной функцией маршрутизатора, пересылающие трафик атакующего к несуществующему узлу в локальной сети, также подвержены аналогичным утечкам.
Поскольку утекающие пакеты никогда не освобождаются, а значение `CONFIG_NET_PKT_TX_COUNT` по умолчанию равно всего 4 (14 для Ethernet), кратковременная атака с низкой интенсивностью истощает пул TX-пакетов. После его исчерпания узел больше не может выделять пакеты для передачи и не способен отправлять TCP/UDP, ARP/ND или любые ответы вообще, что приводит к полному и устойчивому отказу в обслуживании сети (DoS), который не восстанавливается самостоятельно до перезагрузки системы. Исправление заключается в освобождении неотправленного пакета NS с помощью `net_pkt_unref(pkt)` перед преждевременным выходом из функции.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.