Tecnologia

¡Cuidado con tu servidor! Un bug en OpenZFS 2.2.0 provoca corrupción de datos

Corrupción de datos en TrueNAS por OpenZFS

El sistema de archivos ZFS es uno de los más avanzados que existen, incorporando múltiples medidas de seguridad para mantener la integridad de los datos. Este sistema de archivos es usado ampliamente en servidores, ya que nos proporcionará un buen rendimiento y la seguridad de que nuestros datos estarán a salvo. Sistemas operativos como FreeBSD y derivados hacen uso de este sistema de archivos, pero también Linux, e incluso sistemas operativos orientados a NAS como TrueNAS SCALE, TrueNAS CORE e incluso comerciales como QuTS hero de QNAP, hacen uso de este sistema de archivos porque está más que comprobado que es uno de los mejores. Sin embargo, ahora se ha descubierto un bug o fallo después del lanzamiento de OpenZFS 2.2.0, este fallo puede provocar destrucción de datos, por lo que es muy grave si tenemos en cuenta que ZFS es ampliamente usado a nivel profesional.

Ed Maste de la fundación de FreeBSD ha publicado un comunicado para todos los usuarios de ese sistema operativo, os lo dejamos a continuación: «Se ha descubierto un posible problema de corrupción de datos que afecta a varias versiones de OpenZFS. En un principio se informó que la versión afectada era la 2.2.0, pero se ha verificado que también afecta a versiones anteriores y posteriores. Aunque este error se puede reproducir realizando unos pasos muy específicos, no han observado problemas en escenarios de la vida real. El problema no está relacionado con la clonación de bloqueos, aunque es posible que habilitar esta función aumente la probabilidad de encontrarnos con el problema de la corrupción de datos.»

¿Qué versiones están afectadas?

Por lo que se sabe hasta el momento, la versión OpenZFS 2.2.0 está afectada, así como algunas versiones anteriores y también algunas versiones posteriores. Inicialmente se pensó que la nueva característica llamada clonación de bloques, causaba esta pérdida de datos. Sin embargo, ahora parece que esta característica de clonación de bloques ha sacado a la luz un fallo subyacente previamente desconocido. Ed Maste también ha dicho que no está nada claro si el problema es reproducible en la versión de ZFS en FreeBSD 12.4, y que puede existir una variación del código con errores en FreeBSD 12.4 e Illumos, pero el problema está enmascarado por otras razones.

OpenZFS sistema de archivos logo

Cualquier sistema operativo que use las últimas versiones de OpenZFS, es potencialmente vulnerable a este bug que puede provocar la pérdida de datos. No solamente FreeBSD es vulnerable, sino cualquier sistema operativo basado en Linux también lo es, por lo que están dando máxima prioridad para encontrar y solucionar este error tan grave. Hay un método para mitigar este problema de corrupción, pero no previene de manera determinista el problema, aunque sí es cierto que reduce drásticamente la probabilidad de encontrarlo.

En un primer momento hubo mucha confusión sobre si el error se debe a la nueva funcionalidad de clonación de bloques, y la actualización a OpenZFS 2.2.1 desactiva esta función de clonación, lo que puede reducir las posibilidades de que encontremos el fallo. Sin embargo, esta característica no es la culpable, sino que ha sacado a la luz un fallo que ya estaba presente en el código fuente del sistema de archivos.

Proceso para generar la corrupción de datos

El proceso para generar una corrupción de datos es realmente específico, en un escenario real es complicado que se pueda dar, aunque la probabilidad está ahí, por lo que el equipo de desarrollo de OpenZFS está trabajando en solucionar de raíz este problema. Para poder «explotar» este bug, debemos hacer:

  • Mientras que estamos escribiendo un archivo (normalmente sería asíncrono, lo que significa que la escritura no se completa en el momento en el que el proceso de escritura cree que sí), es necesario que al mismo tiempo (cuando ZFS todavía está escribiendo los datos), se lea la parte modificada del archivo. «Al mismo tiempo» significa que debe hacerse en un tiempo muy específico medido en microsegundos.
  • Si se lee los datos en ese momento tan específico, al leerlo veremos todo ceros en lugar de los datos que realmente están escritos.
  • Si el que lee los datos almacena estos ceros leídos incorrectamente en otra ubicación (en un equipo local, en otro lugar en el servidor), es ahí donde se están corrompiendo los datos.

Aunque el sistema de archivos ZFS dispone de una herramienta muy potente para detectar problemas de integridad de los datos, y tiene una herramienta de «limpieza» de los grupos de almacenamiento, en este caso no sirve para nada porque no es capaz de detectar este problema. Es muy posible que en la próxima versión OpenZFS 2.2.2 ya hayan solucionado este problema, mientras tanto, puedes prevenir esta corrupción de datos de forma silenciosa ejecutando el siguiente comando al inicio del arranque:

echo 0 >> /sys/module/zfs/parameters/zfs_dmu_offset_next_sync

Al reiniciar se modificará y se pondrá otra vez el valor a 1, así que deberás configurarlo en el sistema para que al inicio se ejecute. Os recomendamos visitar el hilo del foro de TrueNAS donde se está tratando este problema que afecta a su sistema operativo orientado a NAS.

El artículo ¡Cuidado con tu servidor! Un bug en OpenZFS 2.2.0 provoca corrupción de datos se publicó en RedesZone.

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.