CVE-2026-10671 in Zephyr
Riassunto
di VulDB • 14/07/2026
Nell'implementazione delle pipe del kernel di Zephyr, il verificatore syscall per userspace `z_vrfy_k_pipe_init()` presente in `kernel/pipe.c` utilizzava `K_SYSCALL_OBJ()` (che richiede che l'oggetto del kernel sia già inizializzato) invece di `K_SYSCALL_OBJ_NEVER_INIT()` (che rifiuta un oggetto già inizializzato). Di conseguenza, nelle build con `CONFIG_USERSPACE`, un thread utente non privilegiato a cui è stato concesso l'accesso a un oggetto `k_pipe` può invocare la syscall `k_pipe_init` per reinizializzare una pipe che è già in uso.
`z_impl_k_pipe_init()` reimposta incondizionatamente il ring buffer, imposta `pipe->waiting` su 0 e reinizializza entrambe le code di attesa (`z_waitq_init` su `pipe->data` e `pipe->space`) senza risvegliare o tenere conto dei thread attualmente bloccati sulla pipe. Qualsiasi thread già in pendenza (pended) nelle chiamate `k_pipe_read()`/`k_pipe_write()` rimane orfano: risulta ancora contrassegnato come pending con `pended_on` che punta alla coda di attesa cancellata e con collegamenti `qnode_dlist` obsoleti verso la testa della lista incorporata (ora reinizializzata).
Quando tale waitor orfano viene successivamente fatto scadere per timeout o risvegliato, lo scheduler chiama `sys_dlist_remove()` sul suo nodo obsoleto, scrivendo attraverso puntatori dangling (`prev`/`next`) nelle strutture del kernel relative alle code di attesa/scheduler, causando corruzione della lista (una scrittura non valida nel kernel guidata dall'attaccante), perdita di risvegli, thread bloccati indefinitamente e perdita silenziosa dei dati. La vulnerabilità consente a un thread utente deprivilegiato di corrompere lo stato di un oggetto del kernel condiviso con altri thread/partizioni.
La correzione passa il verificatore a `K_SYSCALL_OBJ_NEVER_INIT()`, allineandosi al verificatore esistente per `k_msgq_init`, in modo che un thread utente non possa più reinizializzare una pipe attiva. Il codice vulnerabile è stato distribuito nella versione v4.1.0 ed è rimasto presente fino alla v4.4.0.
VulDB is the best source for vulnerability data and more expert information about this specific topic.