Seguridad de las ROM opcionales en macOS
Nota: Actualmente, las ROM opcionales no son compatibles con un Mac con chip de Apple.
Seguridad de las ROM opcionales en un Mac con el chip de seguridad T2 de Apple
Los dispositivos Thunderbolt y PCIe tienen una “ROM opcional (OROM)” unida físicamente al dispositivo (normalmente no se trata de una verdadera ROM, sino de un chip reescribible que almacena firmware). En los sistemas basados en UEFI, ese firmware suele ser un controlador de UEFI, que lee el firmware de UEFI y lo ejecuta. El código ejecutado debe inicializar y configurar el hardware desde el que se ha obtenido, para que el resto del firmware pueda usar dicho hardware. Esta función es necesaria para que el hardware especializado de terceros se pueda cargar y funcionar durante las fases más tempranas del arranque, por ejemplo, para iniciar un proceso de arranque desde matrices RAID externas.
Sin embargo, dado que las OROM generalmente son reescribibles, si un atacante sobrescribe la OROM de un periférico legítimo, el código del atacante se ejecutará en un punto temprano del proceso de arranque y podrá manipular el entorno de ejecución y vulnerar la integridad del software cargado posteriormente. Del mismo modo, si el atacante introduce su propio dispositivo malicioso en el sistema, también podrá ejecutar código malicioso.
En macOS 10.12.3, el comportamiento de los ordenadores Mac vendidos después del 2011 se cambió para no ejecutar la OROM por defecto en el arranque del Mac, a menos que se pulsara una combinación especial de teclas. Esta combinación de teclas protegía frente a las OROM maliciosas que se podían introducir sin saberlo en la secuencia de arranque del macOS. El comportamiento por defecto de la Utilidad de contraseña de firmware también se cambió para que, cuando el usuario estableciera una contraseña de firmware, las OROM no se pudieran ejecutar, incluso si se pulsaba la combinación de teclas. Esto protegía frente a un atacante presente físicamente que introdujera una OROM maliciosa intencionadamente. Para los usuarios que todavía necesitan ejecutar OROM incluso después de establecer una contraseña de firmware, se puede configurar una opción mediante la herramienta de línea de comandos firmwarepasswd
en macOS.
Seguridad de la zona protegida de la OROM
En macOS 10.15, el firmware de UEFI se actualizó para contener un mecanismo para aislar las OROM y quitarles privilegios. El firmware de UEFI normalmente ejecuta todo el código (incluidas las OROM) al nivel máximo de privilegios de la CPU, llamado anillo 0, y hay un único espacio de memoria virtual compartida para todo el código y los datos. El anillo 0 es el nivel de privilegios en el que se ejecuta el kernel de macOS, mientras que el nivel de privilegios más bajo, el anillo 3, es donde se ejecutan las apps. La zona protegida de la OROM elimina los privilegios de las OROM utilizando la separación de la memoria virtual al igual que lo hace el kernel y, a continuación, haciendo que las OROM se ejecuten en el anillo 3.
La zona protegida restringe significativamente las interfaces que pueden llamar las OROM (de forma similar al sistema de filtrado de llamadas de los kernels) y el tipo de dispositivo como el que una OROM puede registrarse (de forma similar a la autorización de apps). La ventaja de este diseño es que las OROM maliciosas ya no pueden escribir directamente en ninguna parte de la memoria del anillo 0. En su lugar, se restringen a una interfaz protegida muy limitada y bien definida. Esta interfaz ilimitada reduce significativamente la superficie de ataque y obliga a los atacantes a abandonar en primer lugar la zona protegida y a transferir los privilegios.