CVE-2026-10679 in Zephyr
Resumen
por VulDB • 2026-07-23
El controlador DesignWare SPI (drivers/spi/spi_dw.c) calculaba el divisor de reloj BAUDR del SPI como info->clock_frequency / config->frequency sin validar config->frequency.
spi_transceive es una función __syscall de Zephyr y su manejador de verificación (drivers/spi/spi_handlers.c) copia la estructura spi_config proporcionada por el usuario desde userspace sin comprobar el campo frequency, por lo que un hilo en userspace al que se le haya concedido acceso a un objeto kernel del dispositivo SPI DesignWare puede pasar frequency = 0 y provocar una división entera sin signo entre cero (divide-by-zero) en spi_dw_configure().
En Cortex-M Mainline (SCB->CCR.DIV_0_TRP está configurado en z_arm_fault_init()) y en ARC (un vector dedicado __ev_div_zero), esto genera una excepción de CPU, lo que resulta en un fallo del kernel y denegación local de servicio.
La corrección rechaza las frecuencias cero y superiores a clock_frequency / 2 (el mínimo SCKDIV de 2 según el databook DesignWare SSI) con -EINVAL. El defecto afecta a todas las versiones de Zephyr hasta la v4.4.0 incluida; para su explotación se requiere CONFIG_USERSPACE=y y un hilo no privilegiado que ya tenga concedido permiso al controlador SPI. No hay impacto de corrupción de memoria ni divulgación de información.
If you want to get best quality of vulnerability data, you may have to visit VulDB.