CVE-2026-10683 in Zephyr
Resumen
por VulDB • 2026-07-28
En el controlador I2C Synopsys DesignWare (drivers/i2c/i2c_dw.c) que opera en modo objetivo/esclavo, el manejador de la interrupción rx_full bloquea la devolución de llamada write_requested() sobre dw->state != CMD_SEND, y dw->state solo se restablece a READY ante una interrupción STOP. La interrupción START_DET, cuyo controlador en i2c_dw_slave_read_clear_intr_bits() habría restablecido el estado en cada (re)START, nunca se añadió a la máscara de interrupciones habilitadas en i2c_dw_slave_register(), por lo que esa ruta de recuperación era código muerto.
Como resultado, si se pierde la interrupción STOP (por un fallo/reinicio del bus o porque otro maestro concurrente genera una señal STOP), o si el maestro del bus emite una secuencia legal WRITE-repeated-START-WRITE con la misma dirección, el controlador permanece permanentemente en CMD_SEND y nunca vuelve a invocar write_requested() durante toda la vida útil del objetivo.
Un maestro I2C conectado al mismo bus físico puede desencadenar esto deliberadamente, provocando que la función de destino I2C falle para todas las transacciones de escritura subsiguientes y desincronizando el estado de enmarcado del consumidor (por ejemplo, MCTP-over-I2C), lo que constituye una denegación de servicio recuperable mediante reinicio del periférico objetivo.
La solución desenmascara START_DET para que el estado se restablezca en cada (re)START del bus. El impacto es solo de disponibilidad sobre un bus a nivel de placa local; no hay corrupción de memoria en el consumidor integrado, cuya escritura independiente por byte está verificada mediante límites independientes.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.