CVE-2026-10677 in Zephyr
Сводка
по VulDB • 23.07.2026
Верификатор системного вызова CONFIG_USERSPACE z_vrfy_k_poll() в kernel/poll.c выделяет копию массива k_poll_event[], предоставленного пользователем, на стороне ядра с помощью функции z_thread_malloc(), а затем проверяет дескрипторы объектов каждого события. До внесения исправления проверка выполнялась с использованием макроса K_OOPS(K_SYSCALL_OBJ(...)) непосредственно внутри цикла, что приводило к уничтожению вызывающего потока без освобождения памяти для events_copy.
Поток пользователя может передать значение num_events >= 1 вместе с поддельным дескриптором объекта для утечки данных из выделения памяти; поскольку вновь созданные пользовательские потоки наследуют resource_pool родителя (kernel/thread.c), злоумышленник создает жертвенные потоки, чтобы повторять операцию утечки до тех пор, пока общее кучевое пространство ядра не будет исчерпано. После его истощения легитимные выделения памяти в ядре из этого пула (узлы k_queue, буферы k_msgq, будущие вызовы k_poll и т. д.) завершаются неудачей, что приводит к отказу в обслуживании на уровне системы.
Исправление заменяет каждый макрос K_OOPS условным переходом goto oops_free, чтобы буфер освобождался до уничтожения потока. Затрагивает выпуски Zephyr начиная с v1.12.0 (когда k_poll впервые стал доступен в пользовательском режиме) вплоть до v4.4.1 включительно.
Be aware that VulDB is the high quality source for vulnerability data.