Logotipo de Zephyrnet

Seria seguridad: error de cifrado de disco completo de Linux corregido: ¡parche ahora!

Fecha:

Mucha gente “ejecuta Linux” sin saberlo ni preocuparse realmente: muchos enrutadores domésticos, ayudas para la navegación, cámaras web y otros dispositivos IoT se basan en él; la mayoría de los teléfonos móviles del mundo ejecutan una variante derivada de Linux llamada Android; y muchos, si no la mayoría, de los servicios en la nube listos para usar que existen dependen de Linux para alojar su contenido.

Pero muchos usuarios y administradores de sistemas no solo “usan Linux”, sino que son responsables de cientos, miles, tal vez incluso millones de equipos de escritorio, portátiles y servidores de otras personas en los que se ejecuta Linux.

Esos administradores de sistemas generalmente son responsables no solo de garantizar que los sistemas bajo su jurisdicción funcionen de manera confiable, sino también de mantenerlos tan seguros como puedan.

En el mundo de hoy, eso significa casi con certeza conocer, comprender, implementar y administrar algún tipo de sistema de cifrado de disco completo, y en Linux, eso probablemente signifique usar un sistema llamado LUKS (Configuración de clave unificada de Linux) y un programa llamado cryptsetup para cuidarlo.

FDE por la victoria

Cifrado de disco completo, usualmente referido simplemente como FDE, es una idea simple pero efectiva: cifrar cada sector justo antes de que se escriba en el disco, independientemente del software, usuario, archivo o directorio al que pertenezca; descifrar cada sector justo después de volver a leerlo.

FDE rara vez es suficiente por sí solo, porque básicamente hay una contraseña para todo, por lo que generalmente termina superponiendo niveles adicionales de protección de contraseña específica de archivo, aplicación o usuario.

Pero FDE puede considerarse obligatorio en estos días, especialmente para las computadoras portátiles, exactamente por la misma razón: hay AL MENOS una contraseña para todo, por lo que no queda nada que no esté encriptado.

Con FDE, no tiene que preocuparse por los archivos que puede haber olvidado cifrar; o esas copias temporales que hizo de una carpeta encriptada a una no encriptada mientras se preparaba para una entrega; o esos molestos y abundantes archivos intermedios que inevitablemente generan sus aplicaciones favoritas cuando usa opciones de menú como Export, Compile or Print.

Con FDE, todo se cifra, incluidas las partes no utilizadas del disco, los sectores eliminados, los nombres de archivos, los datos de los archivos de intercambio, las aplicaciones que está utilizando, los archivos del sistema operativo que ha instalado e incluso el espacio en disco que ha puesto a cero deliberadamente. sobrescribir a la fuerza lo que había antes.

Después de todo, si no deja nada sin cifrar y le roban la computadora portátil, los datos en el disco no son de mucha utilidad para los ladrones o para los ciberdelincuentes a los que se los venden.

Si puede demostrar que, de hecho, instaló FDE en las computadoras portátiles que ahora faltan, entonces puede poner su mano en su corazón y jurar a sus auditores, a sus reguladores, a sus clientes, ¡e incluso a los periodistas curiosos! – que tienen poco o nada que temer si esa computadora portátil robada alguna vez aparece en la web oscura.

FDE considerado verde

Mejor aún, si desea retirar el equipo viejo, especialmente si no funciona de manera confiable, FDE generalmente hace que sea mucho menos controvertido enviar el equipo viejo para su reutilización o reciclaje genérico.

FDE significa que si alguien con motivos ocultos compra un equipo jubilado de su empresa de reciclaje, extrae las unidades de disco viejas y de alguna manera las convence para que vuelvan a la vida, no podrá deshacerse fácilmente de sus datos antiguos para divertirse y obtener ganancias.

Sin FDE, los dispositivos de almacenamiento antiguos se vuelven un poco como desechos nucleares: hay muy pocas personas a las que se atreva a confiar en ellos para "reutilizarlos", por lo que generalmente termina con cajas fuertes viejas repletas de "todavía no estamos seguros de qué hacer con estos". ” o con un laborioso protocolo de destrucción de dispositivos que no es tan ecológico como debería ser.

(cayendo viejo material bélico en un alto horno es rápido y efectivo (se sabe que los equipos encargados de hacer cumplir la ley hacen esto, en vivo en la televisión, después de las amnistías de armas destinadas a reducir la violencia endémica), pero vaporizar ciegamente un equipo de computadora y sus muchos metales y polímeros esotéricos ya no es una cara aceptable de “borrado seguro”.)

Pero, ¿y si hay un error?

El problema con FDE, y lo que es igual de importante, las herramientas de software que lo ayudan a administrarlo de manera confiable, es que es fácil hacerlo mal.

¿Utilizó el algoritmo criptográfico correcto? ¿Generaste las claves de cifrado de forma fiable? ¿Manejaste correctamente el tema de la integridad de los datos? ¿Se pueden cambiar las contraseñas de forma segura y rápida? ¿Qué tan fácil es bloquearse por error? ¿Qué sucede si desea ajustar los parámetros de cifrado a medida que evolucionan sus políticas corporativas?

Desafortunadamente, el cryptsetup El programa, ampliamente utilizado para administrar Linux FDE de una manera que responde a las preguntas anteriores, resultó tener un error desagradable, denominado CVE-2021-4122, en una característica útil que ofrece llamada volver a cifrar.

Una solución FDE bien diseñada no usa su contraseña directamente como una clave de cifrado de bajo nivel sin procesar, por varias buenas razones:

  • Cambiar la clave de bajo nivel significa descifrar y volver a cifrar todo el disco. Esto puede tardar varias horas.
  • Varios usuarios deben compartir una sola clave. Por lo tanto, no puede retirar el acceso de un usuario sin bloquear a todos los demás al mismo tiempo.
  • Los usuarios a menudo eligen contraseñas débiles o sufren filtraciones de contraseñas. Si te das cuenta de que esto acaba de suceder, cuanto más rápido puedas cambiar la contraseña, mejor.

Por lo tanto, la mayoría de los sistemas FDE eligen una frase de contraseña maestra para el dispositivo; para LUKS, generalmente tiene una longitud de 512 bits y proviene del generador aleatorio de alta calidad del kernel.

Cada poseedor de contraseña, hasta 8 de ellos de forma predeterminada, elige una contraseña personal que se utiliza para crear una versión codificada personalmente de la clave maestra almacenada en lo que LUKS llama un ranura para llaves, de modo que la clave maestra en sí nunca necesite almacenarse en ningún lugar excepto en la memoria mientras el dispositivo está en uso.

En pocas palabras: no puede derivar la clave maestra para el dispositivo a menos y hasta que proporcione una clave de usuario válida; ninguna de las claves de usuario se almacena en ningún lugar del dispositivo; y ni las claves de usuario ni la clave maestra nunca se revelan ni se almacenan en sus formas de texto sin formato de forma predeterminada.

Puede volcar la clave maestra para un dispositivo LUKS, pero es difícil hacerlo por error y debe ingresar una clave de usuario válida para generar los datos de la clave maestra:

# cryptsetup luksDump /dev/sdb --dump-master-key ¡ADVERTENCIA! ======== El volcado de encabezado con la clave de volumen es información confidencial que permite el acceso a la partición cifrada sin una frase de contraseña. Este volcado debe almacenarse encriptado en un lugar seguro. ¿Está seguro? (Escriba 'sí' en mayúsculas): SÍ Ingrese la frase de contraseña para /dev/sdb: **************** Información del encabezado LUKS para /dev/sdb Nombre de cifrado: aes Modo de cifrado: xts-plain64 Compensación de carga útil: 32768 UUID: 72f6e201-cbdc-496b-98bd-707ece662c9a Bits de MK: 512 <-- MK es la abreviatura de "clave maestra" Volcado de MK: 7a 31 05 ba f3 68 b6 be e5 6c 6f 16 92 44 ea 35 0b 66 fe ce ae ec a9 ec 22 db ea c9 9e 15 4d 60 f8 d0 b9 cb b5 1f ab f4 8f d3 e9 c1 1f 05 37 73 7d 64 df 8b be 38 e4 49 29 d1 5d 95 cd a4 9b 04 #

Opciones de recifrado

Como se mencionó anteriormente, a veces necesita cambiar la configuración de cifrado maestro en un dispositivo, especialmente si necesita ajustar algunos de los parámetros que usó para mantenerse al día con las recomendaciones de cifrado cambiantes, como cambiar a un tamaño de clave más grande.

Para este propósito, cryptsetup proporciona una opción práctica, pero compleja de implementar, llamada reencrypt, que en realidad se encarga de tres procesos diferentes: descifrar, cifradoy volver a cifrar sus datos, incluso mientras el dispositivo está en uso.

El recifrado puede, por supuesto, implementarse con nada más que opciones llamadas --decrypt y --encrypt, pero para volver a cifrar un dispositivo mientras se está utilizando, entonces sería necesario descifrar todo primero y luego volver a cifrar a partir de texto sin formato puro más adelante.

Eso lo dejaría expuesto al peligro por mucho más tiempo del estrictamente necesario: si el dispositivo tomó 12 horas para descifrar y otras 12 horas para volver a cifrar desde cero, al menos algunos de los datos en el disco estarían en formato de texto sin formato para una revisión completa. día, y más del 50% de los datos estarían en formato de texto sin formato durante al menos 12 horas.

Optimización del recifrado

¿Entonces cryptsetup le permite agilizar el proceso de reencriptación al mantener parte del disco encriptado con la clave anterior y el resto encriptado con la nueva clave, mientras realiza un seguimiento cuidadoso de qué tan lejos está en caso de que el proceso se interrumpa a la mitad, o es necesario apagar la computadora antes de que finalice el proceso.

Cuando vuelve a iniciar y un usuario debidamente autorizado ingresa una contraseña para montar el dispositivo (la contraseña del usuario descifra temporalmente tanto la clave maestra anterior como la nueva, por lo que el proceso de descifrado y descifrado de doble barra puede continuar), el re- El proceso de encriptación continúa desde donde lo dejó...

…y al final, la antigua clave maestra se elimina y la nueva se compromete como la única clave de cifrado para los datos subyacentes.

Desafortunadamente, el código que había sido cuidadosamente diseñado para manejar el nuevo cifrado se reutilizó para implementar las opciones menos útiles pero a veces necesarias para "descifrar completamente a texto sin formato" (equivalente a volver a cifrar con un cifrado nulo en la etapa de cifrado), y "cifrar completamente desde texto sin formato" (esencialmente, volver a cifrar con un cifrado nulo en la parte de descifrado).

Y cuando se reutiliza de esta manera, los controles cuidadosos utilizados en reencrypt modo para asegurarse de que nadie haya manipulado los datos temporales utilizados para rastrear hasta dónde había llegado el proceso y, por lo tanto, para evitar el abuso del procedimiento de reencriptación por parte de alguien con acceso de root al disco pero sin conocimiento de la contraseña …

…no se aplicaron.

Evaluación del impacto en la seguridad

Como la descripción de la corrección de errores relevantes pone:

El problema se debió a la reutilización de un mecanismo diseñado para la operación real de recifrado sin volver a evaluar el impacto de seguridad para las nuevas operaciones de cifrado y descifrado. Si bien el nuevo cifrado requiere calcular y verificar ambos resúmenes de clave, no se necesitó ningún resumen para iniciar la recuperación del descifrado si el destino es texto sin formato (sin clave de cifrado).

En pocas palabras: alguien con acceso físico al disco, pero que no tenía la contraseña para descifrarlo por sí mismo, podría engañar a la herramienta de recifrado haciéndole creer que estaba a medio camino a través de un procedimiento de descifrado solamente y, por lo tanto, engañar al FDE. software para descifrar parte del disco y dejarlo sin cifrar.

Como explica la corrección de errores, el sistema LUKS en sí mismo no puede "proteger contra la modificación intencional [porque alguien con acceso físico al disco podría escribir en él sin pasar por el código LUKS], pero dicha modificación no debe causar una violación de la confidencialidad de los datos".

Y ese es el riesgo aquí: que podría terminar con un disco que parece estar encriptado; eso todavía necesita una contraseña válida para montar; que se comporta como si estuviera encriptado; eso podría convencer a sus auditores de que está encriptado...

… pero que, sin embargo, contiene fragmentos (quizás grandes y numerosos) que no solo se almacenan en texto sin formato, sino que tampoco se volverán a cifrar más adelante.

Aún peor, quizás, es la observación de que:

El ataque también se puede revertir después (simulando el cifrado bloqueado de un texto sin formato) con una posible modificación del texto sin formato revelado.

Lo que esto significa es que un usuario malévolo podría descifrar silenciosamente partes de un disco, por ejemplo en un servidor, sin la contraseña, modificar silenciosamente los datos descifrados mientras estaban en formato de texto sin formato, gracias a la falta de protección de integridad en el modo de texto sin formato, y luego, sin problemas y subrepticiamente, vuelva a cifrar y "reintegrar" los datos más adelante.

En pocas palabras, podrían, al menos en teoría, acusarlo de algo bastante travieso (entradas de apariencia fraudulenta en una hoja de cálculo, tal vez, o comandos inadecuados en su historial de Bash, como descargar un criptominero) al insertar "evidencia" falsa y entonces volver a cifrarlo con su contraseña, aunque en realidad no conozcan su contraseña.

¿Qué hacer?

  • Actualizar a cryptsetup 2.4.3 o después. Si ejecuta una distribución de Linux que proporciona actualizaciones periódicas, es posible que ya tenga esta versión. (Usar cryptsetup --version descubrir.)
  • Aprenda a detectar cuándo se está utilizando la opción de volver a cifrar. Puede utilizar el luksDump función para ver si el descifrado/encriptación parcial está en progreso. (Vea abajo.)
  • Restrinja el acceso físico con el mayor cuidado posible. A veces, por ejemplo, si está utilizando servicios en la nube o servidores ubicados en el mismo lugar, no tiene control total sobre quién puede acceder a qué. Pero incluso en un mundo de módulos informáticos confiables y chips criptográficos a prueba de manipulaciones, no hay necesidad de dar acceso a todos si puede evitarlo.

COMANDOS CRYPTSETUP PARA SEGUIMIENTO DE REENCRIPTACIÓN

 --> El primer comando le dice a cryptsetup que aumente la longitud de la clave maestra a 512 bits # cryptsetup reencrypt /dev/sdb --key-size 512 Ingrese la frase de contraseña para la ranura de clave 1: [. . .] --> Mientras vuelve a cifrar, verá dos lotes de claves adicionales en uso, uno para acceder --> la nueva clave maestra (ranura 0 aquí) y el otro para realizar un seguimiento de hasta dónde --> el descifrado y -El proceso de recodificación tiene (ranura 2 aquí) # cryptsetup luksDump /dev/sdb [. . .] Keyslots: 0: luks2 (sin consolidar) Clave: 512 bits [. . .] Sal: f4 be b9 3f 15 bc 8f 97 43 2c f8 1f 31 e3 60 d1 [. . .] 1: luks2 Clave: 256 bits [. . .] Sal: 75 33 81 96 ba f3 ec 8a dc ef 28 dc 68 a9 a7 44 [. . .] 2: volver a cifrar (sin vincular) Clave: 8 bits Prioridad: ignorada Modo: volver a cifrar Dirección: reenviar [. . .] --> Después de completar el nuevo cifrado, se elimina la ranura de clave 1 (para acceder a la --> clave maestra antigua), la ranura de clave 2 (que indica el progreso del --> procedimiento) se elimina y la ranura de clave 0 toma over para acceder al dispositivo # cryptsetup luksDump /dev/sdb [. . .] Keyslots: 0: luks2 Clave: 512 bits [. . .] Sal: f4 be b9 3f 15 bc 8f 97 43 2c f8 1f 31 e3 60 d1 [. . .]

Fuente: https://nakedsecurity.sophos.com/2022/01/14/serious-security-linux-full-disk-encryption-bug-fixed-patch-now/

punto_img

Información más reciente

punto_img