Incluso un usuario sin permisos de administrador puede provocar una desincronización irreversible de los discos.
En Linux se ha detectado una vulnerabilidad grave que existe desde hace más de diez años y está relacionada con el mecanismo de RAID de software al usar el indicador O_DIRECT. El problema permite llevar un conjunto a un estado inconsistente, sin que el sistema muestre errores o advertencias. Aunque el fallo se registró por primera vez en 2015, el interés por él ha resurgido en el contexto de tareas modernas, como la migración en vivo de máquinas virtuales.
La esencia del problema radica en cómo los programas de usuario interactúan con los dispositivos de bloque usando O_DIRECT. Este indicador permite el acceso directo a los datos, evitando la caché del núcleo, lo que resulta útil para mejorar el rendimiento en varias tareas. Sin embargo, en el caso de RAID de software, como MD RAID, DRBD o LVM RAID, esto provoca que cada disco del conjunto pueda recibir datos distintos, aun cuando se escriban desde el mismo puntero en el espacio de usuario. Como resultado, los datos en los dispositivos individuales dejan de estar sincronizados: el conjunto sigue «funcionando» desde el punto de vista del sistema, pero en realidad está dañado.
Además, el problema no está en los propios datos, sino en la pérdida de coherencia entre los discos. Incluso si los datos son «basura», deberían ser idénticos en cada dispositivo RAID. En el caso actual, cada disco recibe su propia versión de esos datos. La causa es que cada uno de los controladores de nivel inferior accede a la misma región de la memoria de usuario de forma independiente, lo que provoca discrepancias durante la lectura y escritura.
La vulnerabilidad se considera especialmente peligrosa, ya que puede desencadenarse desde el espacio de usuario sin privilegios de superusuario, si un programa tiene acceso a un archivo en un conjunto RAID y utiliza O_DIRECT. Esto significa que un programa normal puede dañar un RAID sin saberlo. Además, no se generan errores ni advertencias por parte del núcleo, y el conjunto continúa funcionando como si nada hubiera ocurrido.
Desde la publicación del informe inicial en 2015, la discusión sobre el problema ha aparecido periódicamente en comunidades técnicas. En particular, recientemente los desarrolladores han planteado si este fallo puede afectar la estabilidad de los sistemas durante la migración en vivo de máquinas virtuales, donde la coherencia de los datos es crítica.
De todos los sistemas de archivos de Linux, solo se conocen dos que no son susceptibles a este defecto cuando se usan con RAID de software: OpenZFS y Bcachefs. Otras soluciones siguen siendo potencialmente vulnerables. El problema sigue abierto y no tiene una corrección oficial. Los detalles y la información técnica del incidente se pueden consultar en Bugzilla, donde se publicó el informe original.