Uno de los paquetes que acompaña a NixOS presentó una técnica de ataque que permite acceder a datos en particiones de disco cifradas, en configuraciones que no requieren la entrada de una contraseña de desbloqueo al inicio, gracias a la colocación en el TPM2 (Trusted Platform Module) de información para la descifrado. Tales configuraciones son comunes en servidores o estaciones de trabajo multipropósito, donde es problemático ingresar manualmente la contraseña tras cada reinicio.
Al aplicar un método similar de cifrado de discos, la descifrado se lleva a cabo utilizando una clave adicional almacenada en el TPM que solo se entrega tras confirmar el estado original del sistema. El estado del sistema se guarda en forma de hashes en los registros PCR (Platform Configuration Register) y se vincula a una firma digital que valida el cargador de arranque, así como a los checksums del cargador y del entorno de arranque inicial (initrd). El acceso a la clave en el TPM se concede solo cuando todos los registros PCR vinculados están en el mismo estado que cuando se guardó la clave.
Se asume que la cadena de arranque del sistema operativo se verifica mediante UEFI Secure Boot y que el acceso a las claves solo se puede obtener desde una imagen initrd no modificada. Con una verificación exitosa, el disco se desbloquea automáticamente, pero el acceso a los datos descifrados solo se puede obtener ingresando en su cuenta en el sistema. Al intentar acceder sin un arranque verificado o al intentar reemplazar o modificar initrd con el fin de interceptar claves, la cadena de confianza se romperá, el estado de los registros PCR cambiará y el TPM2 no entregará la información necesaria para la descifrado.
El método de ataque publicado permite evitar la modificación del contenido de initrd en configuraciones que no identifican las particiones cifradas LUKS. Se observa que la inclusión de dicha verificación de particiones no se describe en todas las instrucciones encontradas sobre la configuración de cifrado de discos, ya que la identificación de la partición complica notablemente la configuración (requiere la participación de un registro PCR adicional para verificar la clave de la partición y la generación de initrd considerando su valor). Ejemplos de la realización del ataque se demuestran para Fedora Linux en combinación con la herramienta clevis y para NixOS en combinación con systemd-cryptenroll. Para llevar a cabo el ataque, se necesita acceso físico a la computadora y la capacidad de extraer el dispositivo.
El método se basa en que el atacante puede reemplazar la partición cifrada raíz existente por su propia partición cifrada, creada con el mismo identificador UUID y con las claves de descifrado que el atacante conoce. El entorno initrd pasará el control al proceso init de la partición del atacante. Dado que el contenido de initrd no ha sido modificado, el estado del TPM no se verá alterado y, al obtener el control en su propio entorno, el atacante podrá utilizar el TPM para descifrar la clave de la partición de disco original.
El ataque se resume en los siguientes pasos:
- Extracción del disco y análisis de datos no cifrados en la partición /boot en otra computadora. Determinación de la información sobre la partición cifrada y su identificador UUID a partir de la imagen initrd que se encuentra en la partición /boot.
- Creación de una copia de seguridad de los primeros 64MB de la partición LUKS cifrada.
- Reemplazo de esos 64MB por una imagen con su propia partición raíz, cifrada utilizando la clave conocida por el atacante y que tiene el mismo identificador UUID que la antigua partición.
- Devolución del disco a la computadora original y arranque con la partición raíz reemplazada. Como la desbloqueo automático con la clave del TPM para la partición reemplazada falla, initrd solicita la entrada manual de la contraseña.
- Obteniendo de TPM la clave original, usando los metadatos sobre TPM y el token cifrado del encabezado LUKS de la antigua partición.
- Reinstalación del disco en la computadora del atacante, restauración de la parte sobrescrita de la partición LUKS de la copia de seguridad y uso de la clave original obtenida para acceder a los datos.
Fuente: opennet.ru
