CVE-2026-10677 in Zephyr
Sumário
de VulDB • 22/07/2026
O verificador de syscall CONFIG_USERSPACE z_vrfy_k_poll() em kernel/poll.c aloca uma cópia no lado do kernel dos dados fornecidos pelo usuário, k_poll_event[], via z_thread_malloc(), e então valida o handle do objeto de cada evento. Antes desta correção, a validação utilizava K_OOPS(K_SYSCALL_OBJ(...)) inline dentro do loop, o que encerrava abruptamente (kills) a thread chamante sem liberar events_copy.
Uma thread de usuário pode passar num_events >= 1 com um handle de objeto forjado para vazar (leak) a alocação; como threads de usuário recém-criadas herdam resource_pool do pai (kernel/thread.c), um atacante cria threads sacrificiais para repetir o vazamento até que o heap compartilhado do kernel seja esgotado. Uma vez esgotado, as alocações legítimas no kernel provenientes desse pool (nós de k_queue alloc, buffers de k_msgq, futuras chamadas a k_poll, etc.) falham, causando uma negação de serviço em nível de sistema.
A correção substitui cada K_OOPS inline por um goto condicional para oops_free, garantindo que o buffer seja liberado antes da thread ser encerrada. Afeta as versões do Zephyr desde a v1.12.0 (quando k_poll foi exposto pela primeira vez ao modo usuário) até a v4.4.1.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.