CVE-2026-10671 in ZephyrИнформация

Сводка

по VulDB • 14.07.2026

В реализации конвейеров (pipes) ядра Zephyr верификатор системных вызовов для пользователейых пространств `z_vrfy_k_pipe_init()` в файле `kernel/pipe.c` использовал макрос `K_SYSCALL_OBJ()`, который требует, чтобы объект ядра уже был инициализирован, вместо `K_SYSCALL_OBJ_NEVER_INIT()`, который отклоняет уже инициализированные объекты. В результате при сборке с параметром `CONFIG_USERSPACE` непривилегированный поток пользователя, которому предоставлен доступ к объекту `k_pipe`, может вызвать системный вызов `k_pipe_init` для повторной инициализации конвейера, который уже используется.

Функция `z_impl_k_pipe_init()` безоговорочно сбрасывает кольцевой буфер (ring buffer), устанавливает значение `pipe->waiting` в 0 и повторно инициализирует обе очереди ожидания (`wait queues`) с помощью `z_waitq_init` для полей `pipe->data` и `pipe->space`, не пробуждая потоки, которые в данный момент заблокированы на конвейере. Любой поток, уже ожидающий данных в функциях `k_pipe_read()` или `k_pipe_write()`, остается «сиротой»: он все еще помечается как ожидающий (`pending`), при этом указатель `pended_on` указывает на очищенную очередь ожидания, а ссылки `qnode_dlist` остаются устаревшими и ведут к (теперь повторно инициализированному) встроенному заголовку списка.

Когда такой поток-«сирота» позже получает тайм-аут или разблокируется, планировщик вызывает функцию `sys_dlist_remove()` для его устаревшего узла, что приводит к записи через висячие указатели `prev`/`next` в структуры очереди ожидания ядра и планировщика. Это вызывает повреждение списка (недопустимую запись в ядро, инициированную злоумышленником), потерю сигналов пробуждения (`lost wakeups`), бесконечную блокировку потоков и тихую потерю данных. Уязвимость позволяет непривилегированному потоку пользователя повредить состояние объекта ядра, совместно используемого с другими потоками/разделами.

Исправление переключает верификатор на использование `K_SYSCALL_OBJ_NEVER_INIT()`, что соответствует существующему верификатору для `k_msgq_init`, в результате чего поток пользователя больше не может повторно инициализировать активный конвейер. Уязвимый код был включен в версию v4.1.0 и присутствовал вплоть до версии v4.4.0.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Ответственный

Zephyr

Резервировать

02.06.2026

Раскрытие

14.07.2026

Модерация

принято

Вход

VDB-378315

EPSS

0.00000

KEV

Нет

Деятельности

Очень низкий

Источники

Want to stay up to date on a daily basis?

Enable the mail alert feature now!