Sobre os Exclaves da Apple
(randomaugustine.medium.com)Problemas dos kernels monolíticos de sistemas operacionais
- Os sistemas operacionais modernos geralmente são divididos em dois domínios principais de proteção:
- Domínio sem privilégio (modo de usuário): programas não podem executar diretamente tarefas sensíveis, como acesso a arquivos e comunicação de rede
- Domínio privilegiado (modo kernel): quando um programa solicita ao kernel, por meio de uma chamada de sistema, que execute uma tarefa, o código do kernel a realiza e depois retorna o resultado ao modo de usuário
- A maioria dos sistemas operacionais usa um design de kernel monolítico:
- O kernel tem acesso irrestrito a todo o hardware, memória e dados do usuário do sistema
- Isso seria aceitável se o software não tivesse falhas e não houvesse tentativas de invasão, mas na prática existem bugs e vulnerabilidades de segurança
- Como kernels monolíticos são grandes, a chance de surgirem vulnerabilidades é maior, e uma única falha pode comprometer todo o sistema
- O design de microkernel remove a maior parte das funções do kernel para reforçar a segurança, tratando-as em processos separados sem privilégio:
- Pode aumentar a segurança
- Pode causar perda de desempenho e aumento da complexidade do software de aplicações
- Ainda assim, kernels monolíticos continuam amplamente usados por causa de suas vantagens de desempenho
- O kernel XNU da Apple:
- É o kernel usado em comum por iOS, macOS, tvOS, visionOS e watchOS
- Embora seja um microkernel baseado em Mach, na prática ele funciona como um kernel monolítico, porque a maioria das funções do sistema roda sob o mesmo escopo de privilégio
- Portanto, está sujeito às mesmas vulnerabilidades de segurança de um kernel monolítico
Esforços de isolamento
- Várias técnicas de isolamento baseadas em software e hardware vêm sendo adotadas:
- Microsoft Virtualisation-based Security (VBS) – usada no Credential Guard do Windows
- Intel Software Guard Extension (SGX) e VT-X2
- ARM TrustZone – usado em Samsung Knox, Samsung Pay, Android Verified Boot, entrada de PIN de segurança no Android etc.
A Apple também vem ampliando gradualmente suas tentativas de separar dados do kernel
-
2013 — Apple Secure Enclave
- Introduzido pela primeira vez no iPhone 5s em 2013
- O Secure Enclave roda em um núcleo de CPU independente e reforçado, operando sobre o SepOS, um sistema operacional baseado em microkernel
- O kernel do SepOS usa o cL4, microkernel embarcado L4 customizado da Apple
- Armazena e protege dados sensíveis, como chaves criptográficas e informações biométricas (por exemplo, Face ID)
- Opera independentemente do kernel do iOS e só fornece serviços ao iOS por meio de interações seguras
- Mesmo que o kernel do iOS seja comprometido, o Secure Enclave não é afetado, a menos que ocorra um exploit adicional
- Observe que Secure Enclave e Secure Exclave são conceitos diferentes
-
2017 — Page Protection Layer (PPL)
- Recurso de segurança introduzido no processador A11 do iPhone 8 e do iPhone X
- Recurso baseado em hardware + software que concede permissão para modificar tabelas de páginas de memória apenas a partes específicas do kernel
- O restante do kernel tem a permissão de modificação das tabelas de páginas restrita
- A superfície de ataque fica menor, tornando tentativas de bypass mais raras
- O PPL adicionou uma camada de proteção, mas a maior parte dos privilégios do kernel ainda foi mantida, o que limitava um reforço completo de segurança
-
2021–2023 — Secure Page Table Monitor (SPTM)
- Novo recurso introduzido com o processador A15 do iPhone 13 e o iOS 17
- Substitui o PPL, protege recursos adicionais de memória e os separa em vários subsistemas
- Reforça a segurança com verificação de assinatura de código e execução apenas de código assinado pela Apple
- Nesse período, começaram a aparecer referências indiretas a exclave no código-fonte do XNU
- Surgiu a possibilidade de que os subsistemas gerenciados pelo SPTM sejam exclaves
-
2024 — Exclaves: grande reformulação do modelo de segurança do XNU
- O conceito de exclave aparece no código-fonte do XNU com suporte aos processadores M4 e A18
- Em processadores anteriores, os exclaves não são ativados
- Fica claro que os exclaves são resultado de uma grande reformulação do modelo de segurança do XNU
-
Exclaves do XNU
Aviso: a estrutura interna dos exclaves não é totalmente open source, então parte do conteúdo pode ser especulação ou interpretação
- Os exclaves são um novo conjunto de recursos que reforça fortemente o modelo de segurança tradicional de kernel monolítico do XNU
- Exclaves são recursos isolados do XNU, protegidos mesmo que o kernel seja comprometido
- Características dos exclaves:
- São pré-definidos no momento da build do sistema operacional
- São identificados por nome ou ID
- São compostos por vários tipos
- São inicializados na inicialização do sistema
- São organizados em domínios independentes
- O SPTM protege a memória dos exclaves com um novo tipo de página dedicado a exclaves
- Tipos de recursos de exclave
- Buffers de memória compartilhada – acessíveis tanto pelo kernel quanto pelo exclave
- No XNU, podem ser configurados como somente leitura ou leitura/gravação
- Buffers de áudio e sensores – reforçam a segurança dos indicadores de acesso à câmera e ao microfone
- Conclave – agrupa vários recursos em seu próprio domínio de segurança, com a existência de um Conclave Manager para gerenciá-los
- Serviços – executam código no exclave quando chamados por threads do XNU
- Buffers de memória compartilhada – acessíveis tanto pelo kernel quanto pelo exclave
-
Kernel seguro — baseado em seL4?
- Para que os serviços de exclave rodem independentemente do XNU, foi introduzido um novo kernel chamado Secure Kernel (SK)
- Uma string de versão
cL4foi encontrada no arquivo de imagem do SK - É mais provável que o SK seja baseado em seL4 do que no antigo kernel cL4 (baseado em L4) da Apple
- A estrutura de IPC usada pelo XNU para se comunicar com o SK é semelhante à do seL4
- Nas strings usadas pelo SK, foram encontrados vários conceitos usados no seL4 (por exemplo, capabilities, frames, untyped memory etc.)
- O fato de a Apple ter se juntado à seL4 Foundation em abril de 2024 pode não ser coincidência
- O kernel do processador C1 (o novo chip de baseband da Apple) também parece ser baseado em L4
-
Mundo seguro — ARM TrustZone?
- O SepOS roda em um processador separado, enquanto o SK roda no processador principal de aplicações de alta velocidade
- Isso exige um nível adicional de privilégio do processador → pode ser implementado de uma destas formas:
- Suporte a extensões de virtualização
- Extensões SPTM da Apple
- O mais provável é o uso da tecnologia ARM TrustZone
- Estrutura do TrustZone
- Divide o sistema em dois mundos:
- Secure World – execução de código seguro
- Insecure World – execução de código normal (onde rodam XNU e iOS)
- No código-fonte do XNU, foram encontradas várias referências à alternância entre Secure World e Insecure World do TrustZone
- A Apple aplica o modelo de serviços de exclave em vez do modelo de Trusted Application proposto pelo TrustZone
- O SK fornece serviços e recursos de exclave em um ambiente isolado → reforço de segurança
- Espera-se que seja muito difícil escapar do Secure World para o Insecure World e comprometer o XNU
- Divide o sistema em dois mundos:
- RINGGATE
- Há a possibilidade de a Apple usar o SPTM para gerenciar a transição entre Secure World ↔ Insecure World
- No código, essa transição é mencionada como "RINGGATE"
Conclusão
- O significado da introdução dos exclaves
- Para responder a ataques contínuos de agentes de ameaça avançados, a Apple introduziu os exclaves para reforçar o nível de segurança do sistema operacional
- Ao isolar recursos sensíveis, espera-se obter os seguintes efeitos:
- Redução da superfície de ataque
- Redução do impacto de uma única vulnerabilidade no kernel
- Defender um kernel monolítico é um desafio sem fim, e os exclaves são uma das abordagens para lidar com isso
- Não está claro se essa é a direção certa no longo prazo ou apenas uma solução temporária
- Esperança pessoal → uma futura reformulação baseada em CHERI e ARM Morello 😊
- Mas, no momento, esta é a maior tentativa de defesa entre fabricantes de dispositivos de consumo
- Este texto não aborda com clareza exatamente quais componentes foram movidos para exclaves
- Pelas imagens de build, os seguintes elementos parecem estar rodando em exclaves:
- Indicadores seguros de câmera/microfone
- Parte das funções do Apple Neural Engine (ANE)
- Alguns drivers de dispositivo
- Componentes de comunicação com o Secure Enclave
- Pelas imagens de build, os seguintes elementos parecem estar rodando em exclaves:
- Existe a possibilidade de que mais componentes sejam migrados para exclaves no futuro
- O efeito de segurança dos exclaves depende do nível de otimização desse trabalho de migração
- Há a possibilidade de os exclaves serem usados na infraestrutura do Apple Private Cloud Compute
- Possível garantia de alto nível de segurança e privacidade em IA baseada em nuvem
1 comentários
Comentários no Hacker News