Segurança da ROM de Opção no macOS
Nota: No momento, não há suporte para ROMs de Opção em um Mac com Apple Silicon.
Segurança da ROM de Opção em um Mac com o chip Apple T2 Security
Dispositivos Thunderbolt e PCIe têm uma “ROM de Opção (OROM)” conectada fisicamente ao dispositivo (geralmente ela não é uma ROM de verdade, mas sim um chip regravável que armazena firmware). Em sistemas baseados em UEFI, esse firmware geralmente é um driver de UEFI, que é lido pelo firmware da UEFI e executado. O código executado deve inicializar e configurar o hardware do qual foi obtido, para que o hardware possa ser usado pelo restante do firmware. Essa habilidade é necessária para que hardwares especializados de terceiros possam carregar e operar durante as primeiras fases da inicialização — por exemplo, para inicializar a partir de matrizes RAID externas.
Contudo, como as OROMs geralmente são regraváveis, se um invasor sobrescrevesse a OROM de um periférico legítimo, o código do invasor seria executado no início do processo de inicialização, e poderia adulterar o ambiente de execução e violar a integridade dos softwares carregados posteriormente. Da mesma forma, se o invasor introduzisse seu próprio dispositivo malicioso no sistema, ele também poderia executar um código malicioso.
No macOS 10.12.3, o comportamento de computadores Mac vendidos após 2011 foi alterado para que as OROMs não fossem executadas por padrão durante a inicialização do Mac, a menos que uma combinação especial de teclas fosse pressionada. Essa combinação de teclas ofereceu proteção contra a introdução não intencional de OROMs maliciosas na sequência de inicialização do macOS. O comportamento padrão do Utilitário de Senha de Firmware também foi alterado para que quando o usuário definisse uma senha de firmware, as OROMs não pudessem ser executadas mesmo que a combinação de teclas fosse pressionada. Isso protegia contra a introdução de uma OROM maliciosa por um invasor fisicamente presente. Para os usuários que ainda precisam executar OROMs enquanto uma senha de firmware estiver definida, uma opção não padrão pode ser configurada com a ferramenta de linha de comando firmwarepasswd
no macOS.
Segurança de sandbox da OROM
No macOS 10.15, o firmware da UEFI foi atualizado para conter um mecanismo de sandbox de OROMs e para retirar os privilégios destas. O firmware da UEFI geralmente executa todo o código, incluindo OROMs, no nível máximo de privilégio da CPU, chamado de ring 0, e tem um único espaço de memória virtual compartilhada para todo o código e dados. Ring 0 é o nível de privilégio no qual o kernel do macOS é executado, enquanto o nível de privilégio mais baixo, ring 3, é onde os apps são executados. O sandbox da OROM usa a separação da memória virtual da mesma forma que o kernel e faz com que as OROMs sejam executadas no ring 3, retirando os privilégios das OROMs.
Além disso, o sandbox restringe significativamente tanto as interfaces que podem ser chamadas pelas OROMs (similarmente ao filtro de chamadas do sistema em kernels) quanto o tipo de dispositivo que uma OROM pode usar para se registrar (similarmente à aprovação de apps). O benefício desse design é que as OROMs maliciosas não podem mais gravar diretamente em nenhum lugar dentro da memória do ring 0. Em vez disso, elas são limitadas a uma interface de sandbox bem definida e estreita. Essa interface limitada reduz significativamente a superfície de ataque e obriga os invasores a primeiro escapar do sandbox e aumentar o privilégio.