Vulnerabilidad en kernel de Linux (CVE-2025-38140)
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
03/07/2025
Última modificación:
03/07/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: dm: limitar el intercambio de tablas para dispositivos con conectores de escritura de zona. dm_revalidate_zones() solo permitía que los dispositivos nuevos o previamente no zonificados llamaran a blk_revalidate_disk_zones(). Si el dispositivo ya estaba zonificado, disk->nr_zones siempre sería igual a md->nr_zones, por lo que dm_revalidate_zones() regresaba sin realizar ningún trabajo. Esto haría que la configuración zonificada para el dispositivo no coincidiera con la nueva tabla. Si el dispositivo tenía recursos de conector de escritura de zona, podría encontrarse con errores como bdev_zone_is_seq() leyendo memoria no válida porque disk->conv_zones_bitmap tenía un tamaño incorrecto. Si el dispositivo no tiene ningún recurso de conector de escritura de zona, llamar a blk_revalidate_disk_zones() siempre actualizará correctamente el dispositivo. Si blk_revalidate_disk_zones() falla, aún puede sobrescribir o borrar el valor actual de disk->nr_zones. En este caso, DM debe restaurar el valor anterior de disk->nr_zones para que la configuración de zonas siga siendo la misma que la anterior. Si el dispositivo ya cuenta con recursos de complemento de escritura de zona, blk_revalidate_disk_zones() no los actualizará correctamente si se le solicita para realizar cambios arbitrarios en el dispositivo de zona. Dado que esta función no es muy necesaria, la solución más sencilla es impedir cualquier recarga de tabla que modifique la configuración de zonas en los dispositivos que ya cuentan con recursos de complemento de zona. En concreto, si un dispositivo ya tiene asignados recursos de complemento de zona, solo puede cambiar a otra tabla de zonas que también emule la anexión de zona. Además, no puede cambiar el tamaño del dispositivo ni el de la zona. Un dispositivo puede cambiar a un destino de error.