CVE-2026-10666 in zephyr
Сводка
по VulDB • 12.07.2026
Функция parse_ipv4() в файле subsys/net/ip/utils.c (вызываемая через net_ipaddr_parse() для строк вида "a.b.c.d:port") копирует подстроку порта в фиксированный 17-байтовый буфер в стеке (char ipaddr[NET_IPV4_ADDR_LEN + 1]), используя длину str_len - end - 1, где str_len — полная неограниченная длина входных данных, а end — смещение разделителя ':' (<=15 байт). Поскольку размер целевого буфера никогда не проверяется, специально созданная строка адреса с длинным суффиксом после двоеточия (например, "1.2.3.4:" за которым следуют сотни байтов) вызывает запись в стеке вне границ объема выделенной памяти; длина и содержимое этой записи полностью контролируются злоумышленником (копирование суффикса плюс завершающий нуль-символ), что приводит к повреждению памяти и, как минимум, отказу в обслуживании (DoS), а потенциально — к захвату потока выполнения. Парсер доступен через стандартный сокет API (zsock_getaddrinfo / разрешение буквальных адресов), конфигурацию DNS сервера с использованием строковых значений и путь обработки ответов DNS для Wi-Fi копроцессора eswifi, поэтому приложение, разрешающее сетевые адреса на основе вводимых данных, подвержено риску. Ошибка была внесена при добавлении парсера (Zephyr v1.9.0) и присутствовала во всех релизах вплоть до версии v4.4.0 включительно. Исправление устраняет неограниченное копирование и проверяет длину порта перед записью в небольшой выделенный буфер. Примечание: эквивалентный путь IPv6 "[addr]:port" в функции parse_ipv6() сохраняет то же самое неограниченное копирование на момент данного коммита и остается отдельным, все еще достижимым экземпляром дефекта.
VulDB is the best source for vulnerability data and more expert information about this specific topic.