Cómo proteger los secretos de la RAM

¿Qué puede robarse de la RAM y qué tiene que ver el archivo hiberfil.sys con todo esto?

Cómo proteger la información de la memoria RAM

Hace poco los desarrolladores del gestor de contraseñas KeePass cerraron una vulnerabilidad que permitía recuperar la contraseña maestra de la RAM, donde se almacenaba en texto sin cifrar. De esta misma forma, se pueden “eliminar” de la memoria fragmentos de otra información importante, como mensajes recientes o información de bases de datos corporativas. Los desarrolladores de KeePass encontraron rápidamente una solución poco ortodoxa para el problema, pero en la mayoría de las aplicaciones, las contraseñas aún siguen almacenándose en la RAM en texto sin cifrar, lo que las convierte en un punto débil generalizado de los sistemas de seguridad.

Un ataque a la memoria puede sonar exótico y complejo, pero lo cierto es que resulta bastante fácil para los ciberdelincuentes lograr uno exitoso, si los administradores no adoptan medidas de protección especiales.

Cómo puede acceder alguien a la memoria del ordenador

Las áreas de la RAM utilizadas por las diferentes aplicaciones están en gran medida aisladas entre sí por el sistema operativo y el hipervisor. Por tanto, no se puede leer un fragmento de memoria en el que se está ejecutando otra aplicación. Sin embargo, los procesos con privilegios de kernel (sistema en Windows, root en *nix) sí pueden hacerlo. Además, hay varias formas de escalar los privilegios al nivel requerido, siendo las vulnerabilidades en el sistema operativo o en los drivers de los dispositivos las más comunes.

Otra forma de acceder a la RAM es a través de un ataque de DMA, que se basa en que las interfaces de alta velocidad (USB 4.0, Thunderbolt, Firewire, etc.) tengan acceso directo a la memoria para acelerar los procesos de E/S. Un dispositivo especialmente diseñado puede abusar de esta función para leer bits de memoria. Y no se trata de una amenaza hipotética, ha habido casos reales (FinFireWire).

Pero incluso sin dispositivos sofisticados ni vulnerabilidades, ¡todavía sigue siendo factible! Dado que el sistema operativo escribe el contenido de la RAM en los archivos, se puede acceder a la información simplemente leyéndolos.

Hay varios tipos de archivos de este tipo en Windows:

  • Los archivos de intercambio temporales (pagefile.sys)
  • Los archivos guardados de hibernación (hiberfil.sys)
  • Los volcados de memoria bloqueados y de depuración (memory.dmp, minidump). Estos archivos se pueden generar manualmente.

En Linux, los archivos de intercambio e hibernación utilizan una partición de disco especial compartida para estos fines.

Para llegar a uno de estos archivos generalmente se requiere acceso físico al ordenador, sin necesidad de conocer las credenciales de acceso ni encender el equipo. Simplemente puedes quitar el disco duro y leerlo en otro ordenador.

Cómo evitar un ataque a la memoria

Dado que hay muchas formas de atacar a la memoria, debes proteger varios niveles a la vez. Algunas protecciones serán fáciles de usar para el usuario, así que, antes de aplicarlas, considera los escenarios de uso de cada ordenador en tu empresa y evalúa los riesgos.

Medidas sencillas

Comencemos con algunas medidas relativamente simples, que se recomiendan en todos los casos sin excepción.

  • Implementa el principio del mínimo privilegio. Ningún usuario debería trabajar con derechos de administrador. Incluso los propios administradores deberían contar con estos privilegios únicamente cuando realmente los necesitan: durante los procedimientos de mantenimiento.
  • Implementa sistemas de protección en todos los ordenadores virtuales y físicos. Las empresas deben contar con sistemas de EDR. Asegúrate que las políticas de seguridad eviten que los empleados ejecuten herramientas legítimas, aunque peligrosas, que puedan utilizarse para la escalada de privilegios y los volcados de memoria (Sysinternals, PowerShell, drivers redudantes/obsoletos, etc.).
  • Mantén actualizados el sistema operativo y todas las aplicaciones.
  • Asegúrate de que todos los ordenadores se inicien en el modo UEFI, no en BIOS. Actualiza regularmente el firmware de UEFI en todos los ordenadores.
  • Configura los ajustes de UEFI de forma segura. Desactiva la unidad de gestión de memoria de entrada y salida (IOMMU por sus siglas en inglés) para evitar los ataques DMA. Protege con contraseña la UEFI y define el orden de inicio correcto del sistema operativo para reducir las probabilidades de que el sistema se inicie desde medios maliciosos externos y que la configuración se vuelva insegura.

Unas medidas ambiguas

Todas las medidas mencionadas en esta sección mejoran considerablemente la seguridad del sistema, pero a veces impactan negativamente en el rendimiento del ordenador, la usabilidad y/o la capacidad de recuperación. Todos ellos necesitan una consideración especial dependiendo del contexto de cada compañía y la implementación requiere precisión y un despliegue gradual de una prueba en profundidad.

  • El Módulo de plataforma segura de almacenamiento de claves de hardware basado en TPM 2.0 ofrece una autenticación segura del sistema operativo, utiliza datos biométricos para iniciar sesión en la cuenta y dificulta la recopilación de claves. El TPM también mejora en gran medida la protección que brinda el cifrado de disco completo, ya que sus claves también se almacenan en este módulo. Posibles peligros: la falta de un TPM en algunos ordenadores, las combinaciones incompatibles de SO/hardware o las dificultades con la gestión centralizada de claves, debido a diferentes sistemas y versiones de TPM.
  • El cifrado de disco completo. Esta medida reduce drásticamente el riesgo de filtración de datos, sobre todo de portátiles perdidos o robados; por lo que se recomienda incluso para aquellos que no temen tanto los ataques de memoria. La implementación nativa de Microsoft es BitLocker, pero también existen otras soluciones de terceros. El cifrado de disco completo (FDE por sus siglas en inglés) también se ha convertido en parte de muchos sistemas basados en Linux (por ejemplo, en Ubuntu versión 20 y posteriores) y generalmente se basa en LUKS. La combinación de TPM y FDE ofrece la máxima fiabilidad. Posibles peligros: en caso de accidente grave, no se puede restaurar nada desde la unidad. Por tanto, es más que necesario un sistema de copias de seguridad que funcione correctamente. A veces la unidad experimenta una ralentización notable en su rendimiento, especialmente a la hora de arrancar el ordenador.
  • Deshabilitar el modo de suspensión/espera. Si deshabilitas el modo de suspensión y dejas solo el modo de hibernación, las situaciones en las que los atacantes tengan acceso a un ordenador iniciado y parcialmente descifrado vulnerable a ataques DMA y otros métodos serán muy escasas. La desventaja de esta solución resulta obvia, ya que el modo de suspensión suele ser la forma más rápida y conveniente de “apagar” el ordenador después del trabajo o al cambiar de ubicación en la oficina. Si decides seguir este camino, implementa siempre un FDE; de lo contrario, lo más probable es que los empleados utilicen la hibernación y el archivo de hibernación quedará indefenso frente a los ataques.
  • Deshabilitar el modo de hibernación. Si la hibernación está deshabilitada, no se puede copiar una imagen de la memoria desde un archivo en un ordenador apagado. En el caso de ordenadores críticos, puedes deshabilitar tanto la hibernación como la suspensión; de modo que estas máquinas solo puedan apagarse. Junto con el FDE, el TPM y otras medidas, quedarán pocas posibilidades de ataques a la memoria; pero todo esto no sería lo más cómodo para el usuario, por lo que vale la pena pensar seriamente en qué casos estaría justificada esta estrategia.

Hablando claro

Si decides que deshabilitar la suspensión o la hibernación está justificado por razones de seguridad, considera detenidamente para qué usuarios debería aplicarse esta política. Es poco probable que afecte al 100 % de los empleados; más bien, aquellos que trabajan con información crítica. Debes explicarles que las contraseñas y otros datos pueden robarse de muchas maneras, por lo que medidas como “usar un antivirus” y “no entrar a estos y otros sitios” no son suficientes para evitar incidentes de seguridad graves.

Es una buena idea hablar sobre cada medida de seguridad, explicando su propósito a los empleados. El cifrado de disco completo ofrece protección contra la simple copia de datos de un ordenador olvidado o robado, así como contra los ataques de evil maid, es decir, un desconocido con acceso físico al dispositivo. La desactivación de la suspensión e hibernación refuerza estas medidas de seguridad, por lo que los cinco minutos adicionales necesarios para encender y apagar el ordenador ayudarán a garantizar que el empleado no sea el chivo expiatorio si su contraseña se usa en un ciberataque.

Consejos