Seguridad de la ROM de opción en macOS
Nota: las ROM de opción no son compatibles actualmente en computadoras Mac con Apple Chip.
Seguridad de la ROM de opción en una Mac con el chip de seguridad T2 de Apple
Tanto Thunderbolt como los dispositivos PCIe pueden tener una “ROM de opción” (OROM) conectada físicamente al dispositivo (esta generalmente no es una ROM normal, sino un chip reescribible que almacena firmware). En los sistemas basados en UEFI, el firmware es normalmente un controlador de UEFI, el cual lee y ejecuta el firmware UEFI. El código ejecutado debe inicializar y configurar el hardware desde el que se obtuvo, para que el resto del firmware pueda utilizar el hardware. Esta capacidad es necesaria para que el hardware especializado de terceros pueda cargar y operar durante las fases más tempranas del arranque, por ejemplo, para arrancar desde arreglos de RAID externos.
Sin embargo, como las OROM generalmente son reescribibles, si un atacante sobrescribe la OROM de un periférico legítimo, el código del atacante se ejecutaría temprano en el proceso de arranque y podría alterar el entorno de ejecución y transgredir la integridad del software que se cargue posteriormente. De forma similar, si el atacante introduce su propio dispositivo malicioso al sistema, también podría ejecutar código malicioso.
En macOS 10.12.3, el comportamiento de las computadoras Mac vendidas después de 2011 cambió para que no se ejecuten las OROM de forma predeterminada en el momento en el que la Mac arranca, a menos que se presione una combinación especial de teclas. Esto protege contra las OROM maliciosas que se pudieran introducir inadvertidamente en la secuencia de arranque de macOS. El comportamiento predeterminado de Utilidad Contraseña Firmware también cambió, para que cuando el usuario configure una contraseña para el firmware, las OROM no se puedan ejecutar, incluso si se presiona la combinación de teclas. Esto evita que cualquier atacante físicamente presente introduzca intencionalmente una OROM maliciosa. Para los usuarios que todavía necesitan ejecutar OROM mientras tienen configurada una contraseña de firmware, se puede configurar una opción no predeterminada utilizando la herramienta de línea de comando firmwarepasswd
en macOS.
Seguridad de zona protegida de OROM
En macOS 10.15, el firmware de UEFI se actualizó para contener un mecanismo para colocar las OROM en la zona protegida y quitarles privilegios. El firmware UEFI normalmente ejecuta todo el código, incluidas las OROM, en el máximo nivel de privilegios de CPU, llamado “anillo 0” y un espacio de memoria virtual única compartida para todos los códigos y datos. Anillo 0 es el nivel de privilegios en el que funciona el kernel de macOS, mientras que el nivel con menores privilegios, anillo 3, es donde se ejecutan las apps. La zona protegida de OROM quita los privilegios a las OROM al usar la separación de la memoria virtual tal como lo hace el kernel, y luego hace que las OROM se ejecuten en el anillo 3.
La zona protegida restringe de forma mucho más significativa las interfaces que las OROM pueden llamar (de forma similar al filtrado de llamadas del sistema en los kernels), y el tipo de dispositivo con el que una OROM se puede registrar (lo que es similar a la aprobación de apps). El beneficio de este diseño es que las OROM maliciosas ya no pueden escribir directamente en ningún lugar dentro de la memoria del anillo 0. En cambio, están limitadas a una interfaz de zona protegida estrecha y bien definida. Esta interfaz limitada reduce significativamente la superficie de ataque, y obliga a los atacantes a tener que salir de la zona protegida y escalar los privilegios.