Un error de seguridad en el comando cryptsetup pone en riesgo los datos cifrados en los sistemas Linux.

El cifrado de disco completo (full disk encryption - FDE) permite proteger el contenido de cualquier unidad de almacenamiento. La idea de este cifrado es simple pero efectiva: cada sector se cifra justo antes de ser grabada en el disco, independientemente del software, usuario, archivo o directorio al que pertenezcan los datos. Y de manera contraria, el contenido del sector se decodifica cuando el sistema realiza una operación de lectura.

El cifrado de datos es esencial, especialmente en dispositivos móviles: al guardar archivos en texto plano sin usar ningún algoritmo criptográfico, los usuarios no autorizados pueden extraer fácilmente los datos, robarlos y transferirlos a terceros. En Windows es habitual proteger los datos con BitLocker y pedir un PIN al iniciar el sistema.

Sin embargo, es importante hacerse algunas preguntas: ¿Utilizo el algoritmo criptográfico correcto? ¿Se han generado las claves de forma fiable? ¿Se pueden cambiar las contraseñas de forma rápida y segura?

Desafortunadamente, el programa cryptsetup, ampliamente utilizado para cifrar sistemas Linux, tiene un error de seguridad importante (CVE-2021-4122). Se relaciona con una función llamada recifrado que se encarga de descifrar y cifrar los datos, incluso mientras el dispositivo está en uso. La vulnerabilidad ocurre cuando es necesario cambiar la contraseña maestra.

Para evitar algunos tipos de ataques, cryptsetup mantiene parte del disco encriptado con la clave antigua y el resto con la nueva, haciendo un seguimiento cuidadoso de los cambios, lo cual es útil en caso de que el proceso se interrumpa o el dispositivo se apague antes de que finalice la operación.

El problema aparece cuando alguien con acceso físico al disco cifrado con cryptsetup y que no posea la contraseña para descifrarlo, podría engañar a la herramienta haciéndole creer que está en medio de un procedimiento de descifrado y así dar la orden al software a descifrar parte del disco, dejándolo así sin protección.

Según la información comunicada, el ataque también podría revertirse más adelante. Esto significa que un usuario malintencionado podría haber descifrado partes de un disco sin tener ninguna contraseña, como el contenido de un servidor, modificar los datos descifrados y luego volver a cifrar la unidad atacada.

Para aquellos que usan cryptsetup en Linux, es esencial actualizar a la versión 2.4.3 o posterior.

Para verificar la versión del programa en uso, simplemente escribe cryptsetup --version. No se requiere ninguna otra acción una vez que se actualiza a la última versión.

Fuente: Fix CVE-2021-4122 - LUKS2 reencryption crash recovery attack