En seguridad informática , un ataque de arranque en frío (o, en menor medida, un ataque de reinicio 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 (RAM) de una computadora. ) realizando un reinicio 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 maliciosos o delictivos. [1] [2] [3] El ataque se basa en la propiedad de remanencia de datos de DRAM y SRAM para recuperar contenidos de la memoria que permanecen legibles en los segundos o minutos posteriores a un corte de energía. [2] [4] [5]
Un atacante con acceso físico a una computadora en funcionamiento generalmente ejecuta un ataque de arranque en frío arrancando la máquina y arrancando un sistema operativo liviano desde un disco extraíble para volcar el contenido de la memoria física previa al arranque en un archivo. [6] [2] Un atacante es entonces libre 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 . [7] [8] 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. [2] Esto se debe a que el problema es fundamentalmente un problema de hardware (memoria insegura) y no de software . Sin embargo, el acceso malicioso se puede prevenir limitando el acceso físico y utilizando técnicas modernas para evitar almacenar datos confidenciales en la memoria de acceso aleatorio .
Los módulos de memoria DIMM pierden datos gradualmente con el tiempo a medida que se quedan sin energía, pero no pierden todos los datos inmediatamente cuando se corta la energía. [2] Con ciertos módulos de memoria, la ventana de tiempo para un ataque se puede extender a horas o incluso a una semana enfriándolos con spray congelante y nitrógeno líquido. Además, a medida que los bits desaparecen en la memoria con el tiempo, se pueden reconstruir, ya que se desvanecen de manera predecible. [2] 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 con éxito el ataque de arranque en frío 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 llevar a cabo que los métodos basados en software o un ataque DMA . [9] Si bien la investigación actual se centra en el cifrado de discos, cualquier dato confidencial almacenado en la memoria es vulnerable al ataque. [2]
Los atacantes ejecutan ataques de arranque en frío reiniciando forzada y abruptamente una máquina objetivo y luego arrancando un sistema operativo preinstalado desde una unidad flash USB , CD-ROM o a través de la red . [3] En los casos en los que no sea práctico realizar un restablecimiento completo de la máquina objetivo, un atacante puede, alternativamente, extraer 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 máquina objetivo. memoria. [2] Luego se pueden realizar análisis adicionales de los datos volcados desde la RAM .
También se puede utilizar 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 . [3] En ciertos casos, puede ser preferible un ataque de arranque en frío, como cuando existe un alto riesgo de daños al 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. [3]
Los ataques de arranque en frío se suelen utilizar para investigaciones forenses digitales , fines maliciosos como robo y recuperación de datos. [3]
En ciertos casos, un ataque de arranque en frío se utiliza en la disciplina de la ciencia forense digital para preservar de forma forense los datos contenidos en la memoria como evidencia criminal. [3] Por ejemplo, cuando no es práctico preservar datos en la memoria por otros medios, se puede utilizar 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. [3] 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 potencialmente contiene evidencia de actividad criminal. 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. [3]
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 intenciones maliciosas. [10]
Un objetivo 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 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 Módulo de plataforma segura (TPM) . [2]
En el caso de 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 que haya 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 plazo del ataque no es limitativo en absoluto. [2]
BitLocker en su configuración predeterminada utiliza 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 iniciarse y luego ejecutar un ataque de arranque en frío contra la máquina para recuperar la clave. Debido a esto, se debe utilizar 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, para solucionar esta vulnerabilidad en la implementación predeterminada de BitLocker. [11] [5] Sin embargo, esta solución alternativa no impide que un atacante recupere datos confidenciales de la memoria ni recupere claves de cifrado almacenadas en la memoria caché.
Dado que un volcado de memoria se puede realizar fácilmente ejecutando un ataque de arranque en frío, el almacenamiento de datos confidenciales en la RAM, como 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 a la memoria de acceso aleatorio . Si bien estas soluciones pueden reducir la posibilidad de romper el cifrado completo del disco, no brindan protección a otros datos confidenciales almacenados en la memoria.
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 [12] y Loop-Amnesia. [13] Ambas implementaciones modifican el núcleo 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 perfilado AMD64 o EMT64) se puedan utilizar para almacenar claves de cifrado, en lugar de en RAM. Las claves almacenadas en este nivel no se pueden leer fácilmente desde el espacio de usuario [ cita necesaria ] y se pierden cuando la computadora se reinicia por cualquier motivo. TRESOR y Loop-Amnesia deben utilizar 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 perfil.
Hay dos áreas potenciales en los procesadores x86 modernos para almacenar claves: los registros SSE que, de hecho, podrían tener privilegios al deshabilitar todas las instrucciones SSE (y necesariamente, cualquier programa que dependa de ellas), 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. [14] Los desarrolladores afirman que "al ejecutar TRESOR en una CPU de 64 bits que admite AES-NI , no hay penalización de rendimiento en comparación con una implementación genérica de AES ", [15] y se ejecuta ligeramente más rápido que el cifrado estándar a pesar de la necesidad de recálculo de claves. [12] La principal ventaja de Loop-Amnesia en comparación con TRESOR es que admite el uso de múltiples unidades cifradas; Las principales desventajas son la falta de soporte para x86 de 32 bits y un peor rendimiento en CPU que no admiten AES-NI.
La "caché congelada" (a veces conocida como "caché como RAM") [16] puede usarse para almacenar de forma segura claves de cifrado. Funciona deshabilitando el caché L1 de una CPU y lo utiliza 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. [17] [ se necesita una mejor fuente ]
Guan et al. propusieron una solución similar basada en caché. (2015) [18] empleando el modo de caché WB (Write-Back) para mantener los datos en caché, reduciendo los tiempos de cálculo de los algoritmos de clave pública.
Mimosa [19] 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 memoria especulativo para aumentar el rendimiento de aplicaciones multiproceso. La sólida garantía de atomicidad proporcionada por HTM se utiliza para impedir los accesos simultáneos ilegales al espacio de memoria que contiene datos confidenciales. La clave privada RSA se cifra en la memoria mediante una clave AES protegida por TRESOR. A pedido, se realiza un cálculo de la clave privada RSA dentro de una transacción HTM: primero la clave privada se descifra en la memoria y luego se realiza el descifrado o la firma RSA. Debido a que una clave privada RSA en texto plano solo aparece como datos modificados en una transacción HTM, cualquier operación de lectura de estos datos cancelará la transacción; la transacción retrocederá 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 buffers de almacenamiento, los cuales están ubicados en CPU, no en chips de RAM externos. De esta forma se evitan los ataques de arranque en frío. Mimosa derrota 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 introduce una pequeña sobrecarga de rendimiento.
Las mejores prácticas recomiendan desmontar cualquier disco cifrado que no sea del sistema cuando no esté en uso, ya que la mayoría del software de cifrado de disco está diseñado para borrar de forma segura las claves almacenadas en la memoria caché después de su uso. [20] Esto reduce el riesgo de que un atacante pueda recuperar claves de cifrado de la memoria ejecutando 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. [2] [21] Sin embargo, los datos pueden permanecer legibles desde decenas de segundos hasta varios minutos dependiendo del dispositivo RAM físico de 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 utilice, en lugar de utilizar el modo de suspensión, puede ayudar a mitigar el riesgo de un ataque de arranque en frío exitoso.
Normalmente, un ataque de arranque en frío se puede prevenir limitando el acceso físico del 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 a la placa base , para que no puedan extraerse fácilmente de sus zócalos e insertarse en otra máquina bajo el control de un atacante. [2] Sin embargo, esto no impide que un atacante inicie 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 similares de verificación de arranque pueden ser efectivos para evitar que un atacante inicie un entorno de software personalizado para vaciar el contenido de la memoria principal soldada. [22]
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 mediante 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 . [23] Las implementaciones en hardware x86-64 más nuevo están disponibles en AMD y en Intel Willow Cove y versiones más recientes.
El cifrado de memoria completa basado en software es similar al almacenamiento de claves basado en CPU, ya que el material de las 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 sólo descifra y lee sobre la marcha las páginas inmediatas. [24] Las implementaciones de soluciones de cifrado de memoria basadas en software incluyen: un producto comercial de PrivateCore . [25] [26] [27] y RamCrypt, un parche para el kernel de Linux que cifra datos en la memoria y almacena la clave de cifrado en los registros de la CPU de una manera similar a TRESOR . [12] [24]
Desde la versión 1.24, VeraCrypt admite el cifrado de RAM para claves y contraseñas. [28]
Más recientemente, se han publicado varios artículos que destacan la disponibilidad de procesadores básicos x86 y ARM con seguridad mejorada. [29] [30] En ese trabajo, se utiliza un procesador ARM Cortex A8 como sustrato sobre el cual 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 de confidencialidad e integridad del código y los datos que están cifrados en todas partes fuera de los límites de la CPU.
Dado que los ataques de arranque en frío tienen como objetivo la memoria de acceso aleatorio no cifrada , una solución es borrar datos confidenciales de la memoria cuando ya no estén en uso. La "Especificación de mitigación de ataques de reinicio de plataforma TCG", [31] 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 nuevamente en otro sistema bajo el control del atacante que no admita estas medidas. [2]
Una característica de borrado seguro eficaz sería que, si se interrumpe la alimentación, la RAM se borra en menos de 300 ms antes de que se pierda la alimentación junto con un BIOS seguro y un controlador de disco duro/SSD que cifra 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 mecanismo de seguridad que requiriera una clave de hardware para cambiarlos, sería casi imposible recuperar cualquier dato y también sería inmune a los ataques TEMPEST . man-in-the-RAM y otros posibles métodos de infiltración. [ cita necesaria ] [32]
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. [33] Sin embargo, el borrado de la memoria de video todavía no es posible y, a partir de 2022, todavía es un ticket abierto en el foro de Tails. [34] Los posibles ataques que podrían explotar esta falla son:
Se puede prevenir un ataque de arranque en frío asegurándose de que el hardware atacado no almacene claves.
La codificación de memoria se puede utilizar para minimizar los efectos parásitos indeseables de los semiconductores como característica de los procesadores Intel Core modernos . [38] [39] [40] [41] Sin embargo, debido a que la codificación solo se usa para descorrelacionar cualquier patrón dentro del contenido de la memoria, la memoria se puede descodificar mediante un ataque de descodificación. [42] [43] 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 todavía 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 introducirlas una vez que la máquina se reanuda desde un estado de bajo consumo de energía.
Aunque limitar las opciones del dispositivo de arranque en el BIOS puede hacer que sea un poco más difícil arrancar otro sistema operativo, el firmware en los conjuntos de chips modernos tiende a permitir al usuario anular el dispositivo de arranque durante la POST presionando una tecla de acceso rápido específica. [5] [44] [45] Limitar las opciones del dispositivo de arranque no impedirá 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 sus valores predeterminados incluso si están protegidos con una contraseña. [10] [46] La configuración del BIOS también se puede modificar mientras el sistema se está ejecutando para eludir cualquier protección que aplique, como borrar la memoria o bloquear el dispositivo de arranque. [47] [48] [49]
El ataque de arranque en frío se puede adaptar y llevar a cabo de manera similar en teléfonos inteligentes Android . [50] 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. [50] Luego, el teléfono inteligente muestra una imagen del sistema operativo que puede realizar un volcado de memoria . Normalmente, el teléfono inteligente se conecta 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. [50] Esto reduce el riesgo de que un atacante pueda recuperar las claves de la memoria, incluso si logró ejecutar un ataque de arranque en frío contra el teléfono.
{{cite book}}
: Mantenimiento CS1: falta el editor de la ubicación ( enlace )