Un ataque DMA es un tipo de ataque de canal lateral en seguridad informática , en el que un atacante puede penetrar en una computadora u otro dispositivo, explotando la presencia de puertos de expansión de alta velocidad que permiten el acceso directo a la memoria (DMA).
El DMA se incluye en una serie de conexiones, ya que permite que un dispositivo conectado (como una videocámara , una tarjeta de red , un dispositivo de almacenamiento u otro accesorio útil o una tarjeta de PC interna ) transfiera datos entre sí mismo y la computadora a la máxima velocidad posible, utilizando el acceso directo al hardware para leer o escribir directamente en la memoria principal sin ninguna supervisión o interacción del sistema operativo . Los usos legítimos de dichos dispositivos han llevado a una amplia adopción de accesorios y conexiones DMA, pero un atacante puede igualmente utilizar la misma función para crear un accesorio que se conectará utilizando el mismo puerto, y luego puede potencialmente obtener acceso directo a parte o la totalidad del espacio de direcciones de memoria física de la computadora, evitando todos los mecanismos de seguridad del sistema operativo y cualquier pantalla de bloqueo , para leer todo lo que está haciendo la computadora, robar datos o claves criptográficas , instalar o ejecutar software espía y otros exploits , o modificar el sistema para permitir puertas traseras u otro malware.
Evitar las conexiones físicas a dichos puertos evitará los ataques DMA. En muchos equipos, las conexiones que implementan DMA también se pueden desactivar dentro del BIOS o UEFI si no se utilizan, lo que, según el dispositivo, puede anular o reducir el potencial de este tipo de vulnerabilidad.
Algunos ejemplos de conexiones que pueden permitir DMA en alguna forma explotable incluyen FireWire , CardBus , ExpressCard , Thunderbolt , USB 4.0 , PCI , PCI-X y PCI Express .
En los sistemas operativos modernos , las aplicaciones que no son del sistema (es decir, en modo usuario ) no pueden acceder a ninguna ubicación de memoria que no esté explícitamente autorizada por el controlador de memoria virtual (llamado unidad de administración de memoria (MMU)). Además de contener los daños que pueden causar los fallos de software y permitir un uso más eficiente de la memoria física, esta arquitectura forma parte integral de la seguridad del sistema operativo. Sin embargo, los controladores en modo kernel, muchos dispositivos de hardware y las vulnerabilidades del modo usuario permiten un acceso directo y sin impedimentos al espacio de direcciones de memoria física. El espacio de direcciones físicas incluye toda la memoria principal del sistema, así como los buses asignados a la memoria y los dispositivos de hardware (que son controlados por el sistema operativo a través de lecturas y escrituras como si fueran RAM ordinaria).
La especificación OHCI 1394 permite que los dispositivos, por razones de rendimiento, eviten el sistema operativo y accedan a la memoria física directamente sin ninguna restricción de seguridad. [1] [2] Pero los dispositivos SBP2 pueden ser falsificados fácilmente , lo que hace posible engañar a un sistema operativo para que permita a un atacante leer y escribir en la memoria física y, de ese modo, obtener acceso no autorizado a material criptográfico sensible en la memoria. [3]
Los sistemas pueden seguir siendo vulnerables a un ataque DMA por parte de un dispositivo externo si tienen un FireWire , ExpressCard , Thunderbolt u otro puerto de expansión que, como PCI y PCI Express en general, conecta los dispositivos conectados directamente al espacio de direcciones de memoria física en lugar de virtual . Por lo tanto, los sistemas que no tienen un puerto FireWire pueden seguir siendo vulnerables si tienen un puerto PCMCIA / CardBus / PC Card o ExpressCard que permita instalar una tarjeta de expansión con un FireWire.
Un atacante podría, por ejemplo, utilizar un ataque de ingeniería social y enviar a un "afortunado ganador" un dispositivo Thunderbolt no autorizado. Al conectarse a un ordenador, el dispositivo, a través de su acceso directo y sin trabas al espacio de direcciones físicas, podría eludir casi todas las medidas de seguridad del sistema operativo y tener la capacidad de leer claves de cifrado, instalar malware o controlar otros dispositivos del sistema. El ataque también puede ejecutarse fácilmente cuando el atacante tiene acceso físico al ordenador de destino.
Además de los usos nefastos mencionados anteriormente, también existen algunos usos beneficiosos, ya que las características de DMA se pueden utilizar para fines de depuración del núcleo . [4]
Existe una herramienta llamada Inception [5] para este ataque, que solo requiere una máquina con un puerto de expansión susceptible a este ataque. Otra aplicación conocida por explotar esta vulnerabilidad para obtener acceso no autorizado a computadoras con Windows, Mac OS y Linux es el spyware FinFireWire .
Los ataques DMA se pueden prevenir mediante seguridad física contra dispositivos potencialmente maliciosos.
Los controladores en modo kernel tienen muchas posibilidades de comprometer la seguridad de un sistema, y se debe tener cuidado de cargar controladores confiables y libres de errores. Por ejemplo, las versiones recientes de 64 bits de Microsoft Windows requieren que los controladores sean probados y firmados digitalmente por Microsoft, y evitan que se instalen controladores no firmados.
Una IOMMU es una tecnología que aplica el concepto de memoria virtual a dichos buses del sistema y se puede utilizar para cerrar esta vulnerabilidad de seguridad (así como para aumentar la estabilidad del sistema). Intel denomina a su IOMMU VT-d. AMD denomina a su IOMMU AMD-Vi. Linux y Windows 10 admiten estas IOMMU [6] [7] [8] y pueden utilizarse para bloquear transacciones de E/S que no se han permitido.
Los sistemas operativos más nuevos pueden tomar medidas para prevenir ataques DMA. Los núcleos Linux recientes incluyen la opción de deshabilitar el DMA por parte de dispositivos FireWire y permitir otras funciones. [9] Windows 8.1 puede impedir el acceso a los puertos DMA de una máquina desatendida si la consola está bloqueada. [10] Pero a partir de 2019, los principales proveedores de sistemas operativos no habían tenido en cuenta la variedad de formas en que un dispositivo malicioso podría aprovechar las interacciones complejas entre múltiples periféricos emulados, exponiendo errores y vulnerabilidades sutiles. [11]
Otra forma de mitigar los ataques DMA es no permitir que se almacenen datos confidenciales en la RAM sin cifrar. Sin embargo, la protección contra la lectura del contenido de la RAM no es suficiente, ya que escribir en la RAM a través de DMA puede comprometer el almacenamiento aparentemente seguro fuera de la RAM mediante la inyección de código . Un ejemplo de este último tipo de ataque es TRESOR-HUNT, que expone claves criptográficas que nunca se almacenan en la RAM (sino solo en ciertos registros de la CPU); TRESOR-HUNT logra esto sobrescribiendo partes del sistema operativo. [12]
Microsoft recomienda realizar cambios en la configuración predeterminada de Windows para evitar esto si es un problema. [13]