
Segurança do volume de sistema assinado
No macOS 10.15, a Apple introduziu um volume de sistema somente leitura, um volume isolado e dedicado ao conteúdo do sistema. O macOS 11 ou posterior adicionam proteções criptográficas fortes ao conteúdo do sistema com um volume de sistema assinado (SSV). O SSV possui um mecanismo de kernel que verifica a integridade do conteúdo do sistema no tempo de execução e rejeita qualquer dado — código ou não — que não tenha uma assinatura criptográfica válida da Apple. A partir do iOS 15 e iPadOS 15, o volume de sistema em um iPhone ou iPad também ganha a proteção criptográfica de um volume de sistema assinado.
O SSV ajuda não apenas a impedir a adulteração de qualquer software da Apple que faça parte do sistema operacional, como também faz com que a atualização do software do macOS seja mais confiável e muito mais segura. E já que o SSV usa capturas do Apple File System (APFS), caso uma atualização não possa ser realizada, a versão antiga do sistema pode ser restaurada sem uma reinstalação.
Desde a sua introdução, o APFS tem fornecido integridade aos metadados do sistema de arquivos com somas de verificação não criptográficas no dispositivo de armazenamento interno. O SSV reforça o mecanismo de integridade ao acrescentar hashes criptográficos, ampliando-o assim para abranger cada byte de dados de arquivos. Dados de um dispositivo de armazenamento interno (incluindo metadados do sistema de arquivos) têm seus hashes calculados criptograficamente no caminho de leitura, e os hashes são então comparados a valores esperados nos metadados do sistema de arquivos. No caso de incongruências, o sistema assume que os dados foram adulterados e não os retorna ao software solicitante.
Cada hash SHA256 do SSV é armazenado na árvore de metadados principal do sistema de arquivos, que por sua vez, também tem um hash calculado. E já que cada nó da árvore verifica recursivamente a integridade dos hashes de seus respectivos secundários — de maneira similar a uma árvore de hash binário (Merkle) — o valor de hash do nó raiz, chamado de selo, abrange cada bite de dados no SSV, o que significa que a assinatura criptográfica cobre todo o volume de sistema.
Durante a instalação e atualização do macOS, o selo é recalculado a partir do sistema de arquivos no dispositivo e essa medida é comparada com a medida assinada pela Apple. Em um Mac com Apple Silicon, o gerenciador de inicialização verifica o selo antes de transferir o controle ao kernel. Em um Mac baseado Intel com um chip Apple T2 Security, o gerenciador de inicialização encaminha a medida e a assinatura ao kernel, o qual verifica o selo diretamente antes de montar o sistema de arquivos raiz. Em ambos os casos, se a verificação falhar, o processo de inicialização é interrompido e o usuário é solicitado a reinstalar o macOS. Esse procedimento é repetido a cada inicialização, a não ser que o usuário tenha escolhido entrar em um modo de segurança menor e optado, separadamente, por desativar o volume de sistema assinado.
Durante as atualizações de software do iOS e iPadOS, o volume de sistema é preparado e recalculado de forma semelhante. Os carregadores de inicialização do iOS e iPadOS verificam se o selo está intacto e se ele corresponde a um valor assinado pela Apple antes de permitir que o dispositivo inicie o kernel. Se houver alguma discrepância durante a inicialização, o usuário é solicitado a atualizar o software do sistema no dispositivo. Os usuários não têm permissão para desativar a proteção de um volume de sistema assinado no iOS e iPadOS.
SSV e assinatura de código
A assinatura de código ainda está presente e é exigida pelo kernel. O volume de sistema assinado oferece proteção quando qualquer byte, sem exceção, é lido a partir do dispositivo de armazenamento interno. Em contrapartida, a assinatura de código oferece proteção quando objetos Mach são mapeados na memória como executáveis. Tanto o SSV quanto a assinatura de código protegem o código executável em todos os caminhos de leitura e execução.
SSV e FileVault
No macOS 11 ou posterior, uma proteção quando em repouso equivalente para o conteúdo do sistema é fornecida pelo SSV e, sendo assim, o volume de sistema não precisa mais ser criptografado. Qualquer modificação feita ao sistema de arquivos enquanto em repouso é detectada pelo sistema de arquivos quando lida. Se o usuário tiver ativado o FileVault, o conteúdo de usuário no volume de dados ainda será criptografado com um segredo fornecido pelo usuário.
Se o usuário escolher desativar o SSV, o sistema em repouso ficaria vulnerável à adulteração e essa adulteração poderia permitir que um invasor extraísse dados de usuário criptografados quando da próxima inicialização do sistema. Sendo assim, o sistema não permitirá que o usuário desative o SSV se o FileVault estiver ativado. A proteção enquanto em repouso deve ser ativada ou desativada para ambos os volumes de maneira consistente.
No macOS 10.15 ou anterior, o FileVault protege o software do sistema operacional enquanto em repouso ao criptografar o conteúdo do usuário e do sistema com uma chave protegida por um segredo fornecido pelo usuário. Isso oferece proteção contra o acesso ou modificação efetiva do sistema de arquivos que contém o software do sistema por parte de um invasor com acesso físico ao dispositivo.
SSV e um Mac com um chip Apple T2 Security
Em um Mac com um chip Apple T2 Security, apenas o macOS em si é protegido pelo SSV. O software que é executado no chip T2 e verifica o macOS é protegido pela inicialização segura.