Una vulnerabilidad en cryptsetup permitía deshabilitar el cifrado en particiones LUKS2
Hace poco se dio a conocer la noticia de que fue identificada una vulnerabilidad (ya catalogada bajo CVE-2021-4122) en el paquete Cryptsetup, que se utiliza para cifrar particiones de disco en Linux.
Se menciona que para aprovechar la vulnerabilidad, un atacante debe tener acceso físico al medio cifrado, es decir, el método tiene sentido principalmente para atacar unidades externas cifradas, como unidades flash, a las que el atacante tiene acceso, pero no conoce la contraseña para descifrar los datos.
El ataque es aplicable solo para el formato LUKS2 y está asociado con la manipulación de metadatos responsable de activar la extensión «online reencryption», que permite, si es necesario, cambiar la clave de acceso, iniciar el proceso de recifrado de datos sobre la marcha sin detener el trabajo con la partición.
Dado que el proceso de descifrado y cifrado con una nueva clave lleva mucho tiempo, el «online reencryption»» permite no interrumpir el trabajo con la partición y realizar el reencriptado en segundo plano, transfiriendo gradualmente los datos de una clave a otra. En particular, es posible seleccionar una clave de destino vacía, lo que le permite traducir la sección a un formulario descifrado.
Un atacante puede realizar cambios en los metadatos de LUKS2 que simulan un aborto de la operación de descifrado como resultado de una falla y lograr el descifrado de parte de la partición después de la posterior activación y uso de la unidad modificada por parte del propietario. En este caso, el usuario que conectó la unidad modificada y la desbloqueó con la contraseña correcta no recibe ninguna advertencia sobre la restauración de la operación de recifrado interrumpida y puede conocer el progreso de esta operación solo con el comando «luks Dump». La cantidad de datos que un atacante puede descifrar depende del tamaño del encabezado LUKS2, pero con el tamaño predeterminado (16 MiB) puede superar los 3 GB.
El problema se origina por el hecho de que a pesar de que la operación de recifrado requiere el cálculo y verificación de los hash de las claves nuevas y antiguas, no se requiere el hash para restaurar el proceso de descifrado interrumpido si el nuevo estado implica la ausencia de una clave para el cifrado (texto plano).
Además, los metadatos de LUKS2 que especifican el algoritmo de cifrado no están protegidos contra modificaciones si caen en manos de un atacante. Para bloquear la vulnerabilidad, los desarrolladores agregaron protección de metadatos adicional a LUKS2, para lo cual ahora se verifica un hash adicional, calculado en base a claves conocidas y contenido de metadatos, es decir, un atacante ya no podrá cambiar sigilosamente los metadatos sin conocer la contraseña de descifrado.
Un escenario de ataque típico requiere que el atacante tenga la oportunidad de poner sus manos en el disco varias veces. Primero, el atacante, que no conoce la contraseña de acceso, realiza cambios en el área de metadatos que inician el descifrado de parte de los datos la próxima vez que se active la unidad.
Luego, la unidad se devuelve a su lugar y el atacante espera hasta que el usuario la conecta ingresando una contraseña. Durante la activación del dispositivo por parte del usuario, se inicia un proceso de recifrado en segundo plano, durante el cual parte de los datos cifrados se reemplazan con datos descifrados. Además, si un atacante puede volver a poner sus manos en el dispositivo, algunos de los datos en el disco estarán descifrados.
El problema fue identificado por el mantenedor del proyecto cryptsetup y solucionado en las actualizaciones cryptsetup 2.4.3 y 2.3.7.
El estado de generación de actualizaciones con la solución del problema en las distribuciones se puede rastrear en estas páginas: RHEL, SUSE, Fedora, Ubuntu, Arch. La vulnerabilidad aparece solo desde el lanzamiento de cryptsetup 2.2.0, que introdujo soporte para la operación de «recifrado en línea». Comenzar con la opción «–disable-luks2-reencryption» se puede usar como una solución de seguridad.
Finalmente si estás interesado en conocer más al respecto sobre la noticia, puedes consultar los detalles en el siguiente enlace.