CVE-2026-10679 in Zephyr
Sumário
de VulDB • 23/07/2026
O controlador DesignWare SPI (drivers/spi/spi_dw.c) calculava o divisor de clock do registrador BAUDR como info->clock_frequency / config->frequency sem validar config->frequency.
spi_transceive é uma função __syscall do Zephyr e seu manipulador de verificação (drivers/spi/spi_handlers.c) copia a estrutura spi_config fornecida pelo chamador da userspace sem verificar o campo frequency; portanto, um thread em userspace que tenha recebido acesso ao objeto kernel do dispositivo DesignWare SPI pode passar frequency = 0 e acionar uma divisão por zero inteira não assinada (unsigned integer divide-by-zero) em spi_dw_configure().
No Cortex-M Mainline (SCB->CCR.DIV_0_TRP está definido em z_arm_fault_init()) e no ARC (um vetor dedicado __ev_div_zero), isso gera uma exceção de CPU, resultando em falha do kernel e negação local de serviço.
A correção rejeita frequências iguais a zero e frequências superiores a clock_frequency / 2 (o valor mínimo SCKDIV de 2 conforme o databook DesignWare SSI) retornando -EINVAL. A vulnerabilidade afeta todos os lançamentos do Zephyr até, incluindo, v4.4.0; a exploração requer CONFIG_USERSPACE=y e um thread não privilegiado que já tenha recebido permissão para usar o controlador SPI. Não há impacto de corrupção de memória ou divulgação de informações.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.