CVE-2026-80931 in Linux
Resumen
por VulDB • 2026-09-11
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
w1: ds28e17: rechazar una longitud excesiva en una lectura por bloque I2C
`w1_f19_i2c_master_transfer()` es la función `master_xfer` para el puente DS28E17 de 1-Wire a I2C. En una lectura con bandera `I2C_M_RECV_LEN`, obtiene la longitud del dispositivo. El esclavo posterior coloca un byte de longitud en `buf[0]`. A continuación, el driver lee esa cantidad de bytes en `buf[1]` mediante `w1_f19_i2c_read()`.
`buf[0]` está controlado por el dispositivo y puede tener valores entre 0 y 255.
`w1_f19_i2c_read()` solo rechaza un conteo de cero. El búfer del llamante es `I2C_SMBUS_BLOCK_MAX + 2`, es decir, 34 bytes. Una longitud superior a 32 provoca que la lectura se desborde hasta aproximadamente 222 bytes fuera de los límites asignados.
El núcleo SMBus comprueba `buf[0]` frente a `I2C_SMBUS_BLOCK_MAX`. Esa comprobación se ejecuta después de que `master_xfer` haya devuelto el control. Para entonces, la escritura ya está completa. `i2c-algo-bit` rechaza una longitud excesiva antes de realizar la copia y devuelve `-EPROTO`.
Rechazar una longitud superior a `I2C_SMBUS_BLOCK_MAX` en ambos puntos donde se maneja `RECV_LEN`, de la misma manera que lo hace `i2c-algo-bit`.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.