Ataque de arranque en frío - Cold boot attack

En seguridad informática , un ataque de arranque en frío (o, en menor medida, un ataque de restablecimiento de plataforma ) es un tipo de ataque de canal lateral en el que un atacante con acceso físico a una computadora realiza un volcado de memoria de la memoria de acceso aleatorio de una computadora (RAM ) realizando un restablecimiento completo de la máquina de destino. Normalmente, los ataques de arranque en frío se utilizan para recuperar claves de cifrado de un sistema operativo en ejecución por motivos de investigación criminal o maliciosos. El ataque se basa en la propiedad de remanencia de datos de DRAM y SRAM para recuperar el contenido de la memoria que permanece legible en los segundos o minutos posteriores a la desconexión de la energía.

Un atacante con acceso físico a una computadora en ejecución normalmente ejecuta un ataque de arranque en frío arrancando en frío la máquina y arrancando un sistema operativo ligero desde un disco extraíble para volcar el contenido de la memoria física previa al arranque en un archivo. Un atacante tiene la libertad de analizar los datos descargados de la memoria para encontrar datos confidenciales, como las claves , utilizando diversas formas de ataques de búsqueda de claves . Dado que los ataques de arranque en frío tienen como objetivo la memoria de acceso aleatorio , los esquemas de cifrado de disco completo , incluso con un módulo de plataforma confiable instalado, son ineficaces contra este tipo de ataque. Esto se debe a que el problema es fundamentalmente de hardware (memoria insegura) y no de software . Sin embargo, el acceso malintencionado se puede prevenir limitando el acceso físico y utilizando técnicas modernas para evitar almacenar datos confidenciales en la memoria de acceso aleatorio .

Detalles técnicos

Las latas de nitrógeno líquido, spray de congelación o aire comprimido se pueden improvisar para enfriar los módulos de memoria y, por lo tanto, ralentizar la degradación de la memoria volátil.

Los módulos de memoria DIMM pierden datos gradualmente con el tiempo a medida que pierden energía, pero no pierden inmediatamente todos los datos cuando se corta la energía. Dependiendo de la temperatura y las condiciones ambientales, los módulos de memoria pueden retener potencialmente, al menos, algunos datos hasta 90 minutos después de la pérdida de energía. Con ciertos módulos de memoria, la ventana de tiempo para un ataque se puede extender a horas o incluso semanas enfriándolos con spray de congelación . Además, a medida que los bits desaparecen en la memoria con el tiempo, se pueden reconstruir, ya que se desvanecen de una manera predecible. En consecuencia, un atacante puede realizar un volcado de memoria de su contenido ejecutando un ataque de arranque en frío. La capacidad de ejecutar el ataque de arranque en frío con éxito varía considerablemente entre diferentes sistemas, tipos de memoria, fabricantes de memoria y propiedades de la placa base, y puede ser más difícil de realizar que los métodos basados ​​en software o un ataque DMA . Si bien el enfoque de la investigación actual está en el cifrado de disco, cualquier dato sensible almacenado en la memoria es vulnerable al ataque.

Los atacantes ejecutan ataques de arranque en frío reiniciando de forma forzada y abrupta una máquina de destino y luego arrancando un sistema operativo preinstalado desde una unidad flash USB (video), CD-ROM o en la red . En los casos en que no sea práctico restablecer la máquina de destino, un atacante puede, alternativamente, eliminar físicamente los módulos de memoria del sistema original y colocarlos rápidamente en una máquina compatible bajo el control del atacante, que luego se inicia para acceder a la memoria. A continuación, se pueden realizar más análisis contra los datos descargados de la RAM .

También se puede usar un tipo de ataque similar para extraer datos de la memoria, como un ataque DMA que permite acceder a la memoria física a través de un puerto de expansión de alta velocidad como FireWire . Es posible que se prefiera un ataque de arranque en frío en ciertos casos, como cuando existe un alto riesgo de daños en el hardware. El uso del puerto de expansión de alta velocidad puede provocar un cortocircuito o dañar físicamente el hardware en ciertos casos.

Usos

Los ataques de arranque en frío se utilizan normalmente para investigaciones forenses digitales , con fines maliciosos como el robo y la recuperación de datos.

Forense digital

En ciertos casos, un ataque de arranque en frío se utiliza en la disciplina de la ciencia forense digital para preservar de manera forense los datos contenidos en la memoria como evidencia criminal. Por ejemplo, cuando no es práctico conservar los datos en la memoria por otros medios, se puede usar un ataque de arranque en frío para realizar un volcado de los datos contenidos en la memoria de acceso aleatorio . Por ejemplo, un ataque de arranque en frío se utiliza en situaciones en las que un sistema está protegido y no es posible acceder a la computadora. También puede ser necesario un ataque de arranque en frío cuando un disco duro está cifrado con cifrado de disco completo y el disco contiene potencialmente evidencia de actividad delictiva. Un ataque de arranque en frío proporciona acceso a la memoria, que puede proporcionar información sobre el estado del sistema en ese momento, como qué programas se están ejecutando.

Malas intenciones

Los atacantes pueden utilizar un ataque de arranque en frío para obtener acceso a información cifrada, como información financiera o secretos comerciales, con fines malintencionados.

Eludir el cifrado de disco completo

Un propósito común de los ataques de arranque en frío es eludir el cifrado de disco basado en software. Se ha demostrado que los ataques de arranque en frío, cuando se utilizan junto con los ataques de búsqueda de claves, son un medio eficaz para eludir los esquemas de cifrado de disco completo de varios proveedores y sistemas operativos , incluso cuando se utiliza un criptoprocesador seguro de Trusted Platform Module (TPM) .

En el caso de las aplicaciones de cifrado de disco que se pueden configurar para permitir que el sistema operativo se inicie sin que se ingrese un PIN previo al inicio o sin una clave de hardware presente (por ejemplo, BitLocker en una configuración simple que usa un TPM sin un PIN de autenticación de dos factores o llave USB), el marco de tiempo para el ataque no es limitante en absoluto.

BitLocker

BitLocker en su configuración predeterminada usa un módulo de plataforma confiable que no requiere un pin ni una clave externa para descifrar el disco. Cuando se inicia el sistema operativo , BitLocker recupera la clave del TPM, sin ninguna interacción del usuario. En consecuencia, un atacante puede simplemente encender la máquina, esperar a que el sistema operativo comience a arrancar y luego ejecutar un ataque de arranque en frío contra la máquina para recuperar la clave. Debido a esto, la autenticación de dos factores , como un PIN previo al inicio o un dispositivo USB extraíble que contenga una clave de inicio junto con un TPM, debe usarse para solucionar esta vulnerabilidad en la implementación predeterminada de BitLocker. Sin embargo, esta solución alternativa no evita que un atacante recupere datos confidenciales de la memoria ni las claves de cifrado almacenadas en la memoria caché.

Mitigación

Dado que un volcado de memoria se puede realizar fácilmente mediante la ejecución de un ataque de arranque en frío, el almacenamiento de datos confidenciales en la RAM, como las claves de cifrado para el cifrado completo del disco, no es seguro. Se han propuesto varias soluciones para almacenar claves de cifrado en áreas distintas de la memoria de acceso aleatorio . Si bien estas soluciones pueden reducir la posibilidad de romper el cifrado completo del disco, no brindan protección de otros datos confidenciales almacenados en la memoria.

Almacenamiento de claves basado en registros

Una solución para mantener las claves de cifrado fuera de la memoria es el almacenamiento de claves basado en registros. Las implementaciones de esta solución son TRESOR y Loop-Amnesia. Ambas implementaciones modifican el kernel de un sistema operativo para que los registros de la CPU (en el caso de TRESOR, los registros de depuración x86 y en el caso de Loop-Amnesia, los registros de creación de perfiles AMD64 o EMT64) se puedan usar para almacenar claves de cifrado, en lugar de en la RAM. Las claves almacenadas en este nivel no se pueden leer fácilmente desde el espacio de usuario y se pierden cuando la computadora se reinicia por cualquier motivo. TRESOR y Loop-Amnesia deben usar la generación de claves redondas sobre la marcha debido al espacio limitado disponible para almacenar tokens criptográficos de esta manera. Por seguridad, ambos desactivan las interrupciones para evitar que la información clave se filtre a la memoria desde los registros de la CPU mientras se realiza el cifrado o descifrado, y ambos bloquean el acceso a los registros de depuración o de perfil.

Hay dos áreas potenciales en los procesadores x86 modernos para almacenar claves: los registros SSE que de hecho podrían convertirse en privilegiados deshabilitando todas las instrucciones SSE (y necesariamente, cualquier programa que dependa de ellos), y los registros de depuración que eran mucho más pequeños pero no tenían tales cuestiones.

Se ha desarrollado una distribución de prueba de concepto llamada 'paranoix' basada en el método de registro SSE. Los desarrolladores afirman que "al ejecutar TRESOR en una CPU de 64 bits compatible con AES-NI , no hay ninguna penalización en el rendimiento en comparación con una implementación genérica de AES ", y se ejecuta un poco más rápido que el cifrado estándar a pesar de la necesidad de recalcular la clave. La principal ventaja de Loop-Amnesia en comparación con TRESOR es que admite el uso de varias unidades encriptadas; las principales desventajas son la falta de compatibilidad con x86 de 32 bits y un peor rendimiento en CPU que no admiten AES-NI.

Almacenamiento de claves basado en caché

La "caché congelada" (a veces conocida como "caché como RAM"), se puede utilizar para almacenar de forma segura las claves de cifrado. Funciona al deshabilitar la memoria caché L1 de una CPU y la usa para el almacenamiento de claves; sin embargo, esto puede degradar significativamente el rendimiento general del sistema hasta el punto de ser demasiado lento para la mayoría de los propósitos.

Guan et al. Propusieron una solución similar basada en caché. (2015) al emplear el modo de caché WB (Write-Back) para mantener los datos en cachés, lo que reduce los tiempos de cálculo de los algoritmos de clave pública.

Mimosa en IEEE S&P 2015 presentó una solución más práctica para cálculos criptográficos de clave pública contra ataques de arranque en frío y ataques DMA. Emplea memoria transaccional de hardware (HTM) que se propuso originalmente como un mecanismo de acceso a la memoria especulativa para mejorar el rendimiento de las aplicaciones multiproceso. La sólida garantía de atomicidad proporcionada por HTM se utiliza para derrotar los accesos simultáneos ilegales al espacio de memoria que contiene datos confidenciales. La clave privada RSA está encriptada en la memoria por una clave AES que está protegida por TRESOR. A petición, se realiza un cálculo de clave privada RSA dentro de una transacción HTM: la clave privada se descifra primero en la memoria y luego se realiza el descifrado o firma RSA. Debido a que una clave privada RSA de texto sin formato solo aparece como datos modificados en una transacción HTM, cualquier operación de lectura de estos datos abortará la transacción; la transacción se revertirá a su estado inicial. Tenga en cuenta que la clave privada RSA está cifrada en el estado inicial y es el resultado de operaciones de escritura (o descifrado AES). Actualmente, HTM se implementa en cachés o búferes de almacenamiento, ambos ubicados en CPU, no en chips de RAM externos. Por lo que se previenen los ataques de arranque en frío. Mimosa derrota contra los ataques que intentan leer datos confidenciales de la memoria (incluidos los ataques de arranque en frío, los ataques DMA y otros ataques de software), y solo presenta una pequeña sobrecarga de rendimiento.

Desmontaje de discos cifrados

Las mejores prácticas recomiendan desmontar cualquier disco cifrado que no sea del sistema cuando no esté en uso, ya que la mayoría de los programas de cifrado de disco están diseñados para borrar de forma segura las claves almacenadas en la memoria caché después de su uso. Esto reduce el riesgo de que un atacante pueda salvar las claves de cifrado de la memoria mediante la ejecución de un ataque de arranque en frío. Para minimizar el acceso a la información cifrada en el disco duro del sistema operativo, la máquina debe apagarse por completo cuando no esté en uso para reducir la probabilidad de un ataque de arranque en frío exitoso. Sin embargo, los datos pueden permanecer legibles desde decenas de segundos hasta varios minutos, dependiendo del dispositivo RAM físico en la máquina, lo que potencialmente permite que un atacante recupere algunos datos de la memoria. Configurar un sistema operativo para que se apague o hiberne cuando no se use, en lugar de usar el modo de suspensión, puede ayudar a mitigar el riesgo de un ataque de arranque en frío exitoso.

Contramedidas efectivas

Impedir el acceso físico

Por lo general, un ataque de arranque en frío se puede prevenir limitando el acceso físico de un atacante a la computadora o haciendo que sea cada vez más difícil llevar a cabo el ataque. Un método consiste en soldar o pegar los módulos de memoria en la placa base , de modo que no se puedan quitar fácilmente de sus enchufes e insertarlos en otra máquina bajo el control de un atacante. Sin embargo, esto no evita que un atacante arranque la máquina de la víctima y realice un volcado de memoria utilizando una unidad flash USB extraíble . Una mitigación como UEFI Secure Boot o enfoques de verificación de arranque similares puede ser eficaz para evitar que un atacante inicie un entorno de software personalizado para volcar el contenido de la memoria principal soldada.

Cifrado de memoria completa

El cifrado de la memoria de acceso aleatorio (RAM) mitiga la posibilidad de que un atacante pueda obtener claves de cifrado u otro material de la memoria a través de un ataque de arranque en frío. Este enfoque puede requerir cambios en el sistema operativo, las aplicaciones o el hardware. Un ejemplo de cifrado de memoria basado en hardware se implementó en Microsoft Xbox . Las implementaciones en el hardware x86-64 más nuevo de AMD están disponibles y el soporte de Intel está disponible en Willow Cove .

El cifrado de memoria completa basado en software es similar al almacenamiento de claves basado en CPU ya que el material de claves nunca está expuesto a la memoria, pero es más completo ya que todo el contenido de la memoria está cifrado. En general, el sistema operativo solo descifra y lee sobre la marcha las páginas inmediatas. Las implementaciones de soluciones de cifrado de memoria basadas en software incluyen: un producto comercial de PrivateCore . y RamCrypt, un parche de kernel para el kernel de Linux que encripta datos en la memoria y almacena la clave de encriptación en los registros de la CPU de una manera similar a TRESOR .

Desde la versión 1.24, VeraCrypt admite el cifrado de RAM para claves y contraseñas.

Más recientemente, se han publicado varios artículos que destacan la disponibilidad de procesadores básicos x86 y ARM con seguridad mejorada. En ese trabajo, se utiliza un procesador ARM Cortex A8 como sustrato sobre el que se construye una solución de cifrado de memoria completa. Los segmentos de proceso (por ejemplo, pila, código o montón) se pueden cifrar individualmente o en composición. Este trabajo marca la primera implementación de cifrado de memoria completa en un procesador básico de uso general. El sistema proporciona protección tanto de confidencialidad como de integridad del código y los datos que están encriptados en todas partes fuera de los límites de la CPU.

Borrado seguro de la memoria

Dado que los ataques de arranque en frío tienen como objetivo la memoria de acceso aleatorio no cifrada , una solución es borrar los datos confidenciales de la memoria cuando ya no se utilizan. La "Especificación de mitigación de ataques de restablecimiento de la plataforma TCG", una respuesta de la industria a este ataque específico, obliga al BIOS a sobrescribir la memoria durante la POST si el sistema operativo no se apagó limpiamente. Sin embargo, esta medida aún se puede eludir quitando el módulo de memoria del sistema y leyéndolo en otro sistema bajo el control del atacante que no admita estas medidas.

Una característica efectiva de borrado seguro sería que si se interrumpe la energía, la RAM se borra en menos de 300 ms antes de que se pierda la energía junto con un BIOS seguro y un controlador de disco duro / SSD que encripta los datos en los puertos M-2 y SATAx. . Si la RAM en sí no contuviera presencia en serie u otros datos y los tiempos se almacenaran en el BIOS con algún tipo de seguridad que requiera una clave de hardware para cambiarlos, sería casi imposible recuperar los datos y también sería inmune a los ataques TEMPEST . man-in-the-RAM y otros posibles métodos de infiltración.

Algunos sistemas operativos , como Tails, proporcionan una función que escribe de forma segura datos aleatorios en la memoria del sistema cuando el sistema operativo se apaga para mitigar un ataque de arranque en frío. Sin embargo, el borrado de la memoria de video aún no es posible y, a partir de 2021, sigue siendo un boleto abierto en el foro de Tails. Los posibles ataques que podrían aprovechar esta falla son:

  • La generación de un par de claves GnuPG y la visualización de la clave privada en un editor de texto podría llevar a la recuperación de la clave.
  • Se podía ver una semilla de criptomoneda , por lo que se pasaba por alto la billetera (incluso si estaba encriptada) permitiendo el acceso a los fondos.
  • Escribir una contraseña con la visibilidad habilitada puede mostrar partes de ella o incluso la clave completa. Si se utiliza un archivo de claves, se podría demostrar que reduce el tiempo necesario para un ataque de contraseña.
  • Es posible que se muestren rastros de volúmenes cifrados montados o abiertos con negabilidad plausible , lo que lleva al descubrimiento de ellos.
  • Si está conectado a un servicio .onion , la URL podría mostrarse y conducir a su descubrimiento, mientras que de lo contrario sería extremadamente difícil.
  • El uso de un programa en particular podría mostrar los patrones del usuario. Por ejemplo, si se utiliza y se abre un programa de esteganografía, se podría suponer que el usuario ha estado ocultando datos. Asimismo, si se está utilizando un mensajero instantáneo, se podría mostrar una lista de contactos o mensajes.

Almacenamiento de claves externo

Se puede prevenir un ataque de arranque en frío asegurándose de que el hardware atacado no almacene claves.

Contramedidas ineficaces

La codificación de memoria se puede utilizar para minimizar los efectos parásitos indeseables de los semiconductores como una característica de los procesadores Intel Core modernos . Sin embargo, debido a que la codificación solo se usa para descodificar cualquier patrón dentro del contenido de la memoria, la memoria se puede descodificar mediante un ataque de descodificación. Por lo tanto, la codificación de memoria no es una mitigación viable contra los ataques de arranque en frío.

El modo de suspensión no proporciona protección adicional contra un ataque de arranque en frío porque los datos normalmente aún residen en la memoria mientras se encuentran en este estado. Como tal, los productos de cifrado de disco completo siguen siendo vulnerables a los ataques porque las claves residen en la memoria y no es necesario volver a ingresarlas una vez que la máquina se reanuda desde un estado de bajo consumo de energía.

Aunque limitar las opciones del dispositivo de inicio en el BIOS puede hacer que sea un poco menos fácil iniciar otro sistema operativo, el firmware en los conjuntos de chips modernos tiende a permitir que el usuario anule el dispositivo de inicio durante la POST presionando una tecla de acceso rápido especificada. Limitar las opciones del dispositivo de arranque no evitará que el módulo de memoria se extraiga del sistema y se vuelva a leer en un sistema alternativo. Además, la mayoría de los conjuntos de chips proporcionan un mecanismo de recuperación que permite restablecer la configuración del BIOS a los valores predeterminados incluso si están protegidos con una contraseña. La configuración del BIOS también se puede modificar mientras el sistema está en ejecución para eludir cualquier protección impuesta, como borrar la memoria o bloquear el dispositivo de arranque.

Teléfonos inteligentes

El ataque de arranque en frío se puede adaptar y llevar a cabo de manera similar en los teléfonos inteligentes Android . Dado que los teléfonos inteligentes carecen de un botón de reinicio, se puede realizar un arranque en frío desconectando la batería del teléfono para forzar un reinicio completo. Luego, el teléfono inteligente se muestra con una imagen del sistema operativo que puede realizar un volcado de memoria . Por lo general, el teléfono inteligente está conectado a la máquina de un atacante mediante un puerto USB .

Normalmente, los teléfonos inteligentes Android borran de forma segura las claves de cifrado de la memoria de acceso aleatorio cuando el teléfono está bloqueado. Esto reduce el riesgo de que un atacante pueda recuperar las claves de la memoria, incluso si lograron ejecutar un ataque de arranque en frío contra el teléfono.

Referencias

enlaces externos