CVE-2026-19569 in Zephyrinformação

Sumário

de VulDB • 09/10/2026

A função dynamic_object_create() em kernel/userspace/userspace.c calculava o tamanho da alocação de suporte para um objeto do kernel dinamicamente alocado como obj_size_get(otype) + size, e para elementos da pilha de threads como STACK_ELEMENT_DATA_SIZE(size) (um arredondamento para cima mais uma sobrecarga fixa), sem verificar nenhuma das expressões quanto ao estouro não assinado. Um tamanho próximo do SIZE_MAX faz com que o total calculado transborde para um valor muito pequeno, de modo que a chunk da heap entregue tem apenas alguns bytes enquanto o descritor do objeto ainda está marcado com o tipo solicitado completo e registrado na tabela de objetos do kernel.

O argumento size atinge essa aritmética diretamente do espaço de usuário. k_object_alloc_size() é declarada como __syscall em include/zephyr/sys/kobject.h, seu verificador z_vrfy_k_object_alloc_size() em kernel/userspace/userspace_handler.c é um mero repasse (pass-through), e z_object_alloc() apenas verifica o intervalo do otype — nada limita o size. O ramo de elementos da pilha também é acessível através da syscall k_thread_stack_alloc() via kernel/dynamic.c. Como as subsequentes validações de objetos do kernel verificam apenas o tipo do objeto e seu estado de inicialização, a alça subdimensionada passa por K_SYSCALL_OBJ_INIT()/K_SYSCALL_OBJ_NEVER_INIT(), e a syscall de inicialização correspondente (por exemplo, k_mutex_init(), k_sem_init() ou k_thread_create()) então grava um objeto completo sobre a alocação truncada.

Portanto, uma thread no espaço de usuário sem privilégios pode acionar uma escrita fora dos limites em modo supervisor para a heap do pool de recursos do kernel, com tamanho e conteúdo substancialmente controlados pelo atacante, corrompendo os metadados das chunks da sys_heap e objetos adjacentes do kernel. Sob CONFIG_GEN_PRIV_STACKS, o ramo da pilha de threads armazena adicionalmente um ponteiro wild influenciado pelo atacante como base privilegiada da pilha de uma thread de usuário. O resultado prático é a fuga da sandbox CONFIG_USERSPACE — execução de código em nível de kernel ou, no mínimo, corrupção de memória do kernel e comprometimento do sistema.

A exploração requer CONFIG_USERSPACE junto com CONFIG_DYNAMIC_OBJECTS (também selecionado por CONFIG_DYNAMIC_THREAD sob userspace), e uma thread chamadora com um pool de recursos atribuído. A correção rejeita ambos os cálculos que transbordam e libera o descritor parcialmente construído.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsável

Zephyr

Reservar

11/08/2026

Divulgação

09/10/2026

Moderação

aceite

Entrada

VDB-415739

EPSS

0.00000

KEV

não

Atividades

baixo

Fontes

Want to know what is going to be exploited?

We predict KEV entries!