Protegiéndose contra las vulnerabilidades de Firewire DMA en Linux

3

Sé que ha habido preguntas sobre esto en el pasado, pero todas parecen estar bastante anticuadas, o no son tan relevantes.

Necesito usar una conexión 1394 (Firewire), sin embargo, estoy preocupado por las posibles vulnerabilidades de DMA. A mi entender, un dispositivo FireWire podría falsificar la cantidad de memoria a la que requiere acceso, de modo que todas las direcciones de memoria pueden leerse potencialmente desde el sistema. Dentro de Linux, por ejemplo, ¿hay una forma en que este espacio pueda ser restringido, posiblemente utilizando mmap? Cualquier idea es muy apreciada.

    
pregunta Nark 21.01.2014 - 10:49
fuente

3 respuestas

1

Los controladores FireWire del tipo utilizado en PC (OHCI) tienen la capacidad de permitir que otros dispositivos FireWire realicen DMA remotos. El controlador debe habilitar esta función antes de que funcione.

El protocolo SBP-2 es el único protocolo FireWire que utiliza DMA remoto; por lo tanto, el kernel de Linux habilita DMA remoto solo para dispositivos SBP-2 (es decir, discos duros y otros dispositivos de almacenamiento), o cualquier dispositivo que reclame sea un dispositivo SBP-2.

Puedes deshabilitar ese controlador si lo deshabilitas; escribe la línea

blacklist firewire-sbp2

en cualquier archivo .conf en /etc/modprobe.d , o deshabilite CONFIG_FIREWIRE_SBP2 al compilar el kernel.

En este momento, el controlador firewire-sbp2 depende del DMA remoto para las transferencias de datos, por lo que debe elegir entre los dispositivos de almacenamiento FireWire y la protección contra ataques DMA remotos. (Sería posible implementar esas transferencias en software, pero esto aún no se ha implementado).

La capacidad de leer / escribir cualquier memoria también es útil para la depuración de otro sistema, por lo que existe la opción CONFIG_FIREWIRE_OHCI_REMOTE_DMA que habilita el DMA remoto para el dispositivo FireWire de cualquier . Sin embargo, esta opción no está habilitada de forma predeterminada.

    
respondido por el CL. 22.01.2014 - 11:38
fuente
0

¿Necesita el protocolo SBP-2 ? Si no, póngalo en una lista negra: agregue lo siguiente a /etc/modprobe.d/blacklist-firewire.conf :

blacklist firewire-sbp2

Esto debería al menos proteger contra herramientas como inception .

    
respondido por el Carsten Maartmann-Moe 21.01.2014 - 23:50
fuente
-2

No hay una mitigación de software para el ataque DMA. En algunos casos, incluso deshabilitar el puerto no funciona porque la fabricación se basa en un interruptor de apagado del software para el dispositivo 1394.

En el momento en que se pueda invocar una llamada de nivel del sistema operativo, el ataque ya ha tenido éxito.

Retire el dispositivo 1394 si no es necesario (sin embargo, tenga en cuenta otros vectores DMA como PCMCIA, Thunderbolt, etc.) o use epoxi en el puerto.

    
respondido por el dmay 21.01.2014 - 23:16
fuente

Lea otras preguntas en las etiquetas