
Extensões do sistema no macOS
Um Mac com o macOS 10.15 ou posterior permite que os programadores ampliem as capacidades do macOS ao instalar e gerir extensões do sistema que são executadas no espaço do utilizador em vez de serem executadas ao nível do kernel. Ao serem executadas no espaço do utilizador, as extensões do sistema aumentam a estabilidade e segurança do macOS. Embora as kexts tenham inerentemente acesso total a todo o sistema operativo, as extensões que são executadas no espaço do utilizador recebem apenas os privilégios necessários para executar a função específica.
As extensões do sistema suportam um gestão robusta através de um serviço de gestão de dispositivos, incluindo a capacidade de permitir que todas as extensões de um programador específico ou de um tipo específico (como extensões de rede) carreguem sem a interação do utilizador. Opcionalmente, um serviço de gestão de dispositivos pode não permitir que os utilizadores autorizem o carregamento das suas próprias extensões do sistema.
Para um Mac com o macOS 12.0.1 ou posterior, um dicionário na carga útil de extensões do sistema — denominada RemovableSystemExtensions
, permite que um administrador de serviço de gestão de dispositivos especifique que aplicações podem remover as suas próprias extensões do sistema. Não é necessária autenticação de administrador local para remover as extensões do sistema. Esta funcionalidade é particularmente útil para fornecedores que possam fornecer desinstaladores automatizados para as respetivas aplicações.
Para um Mac com o macOS 11.3 ao macOS 11.6.4, fazer alterações a um perfil de extensão do sistema afeta diretamente o estado de uma extensão. Por exemplo, se uma extensão estiver pendente de aprovação e for enviado um perfil de configuração que autorize a extensão, esta pode ser carregada. Por outro lado, se uma aprovação for revogada, a extensão do sistema é descarregada e marcada para remoção no próximo reinício do Mac. Se uma extensão do sistema tentar descarregar-se, surge uma caixa de diálogo de autenticação interativa que solicita as credenciais de administrador para autorizar a descarga.
Extensões do kernel
Para um Mac com o macOS 11 ou posterior, se extensões de kernel (kexts) de terceiros estiverem ativadas, não podem ser carregadas no kernel mediante pedido. Exige a aprovação do utilizador e o reinício do macOS para carregar as alterações no kernel, e também exige que o arranque seguro seja configurado como “Segurança reduzida” num Mac com Apple Silicon.
Os programadores podem utilizar frameworks, incluindo DriverKit e NetworkExtension, para escrever recursos de interface humana e USB, ferramentas de segurança de ponto terminal (como prevenção de perda de dados ou outros agentes de ponto terminal), e VPN e ferramentas de rede, sem a necessidade de escrever kexts. Os agentes de segurança de terceiros só devem ser utilizados se tirarem partido destas API ou tiverem um roteiro robusto para passarem para eles e para longe das extensões kernel.
Importante: as kexts já não são recomendadas para macOS. As kexts arriscam a integridade e a fiabilidade do sistema operativo. Os utilizadores devem dar preferência a soluções que não exijam a ampliação do kernel e em vez disso usarem extensões do sistema.
Adicionar kexts num Mac baseado em Intel ou com Apple Silicon com o macOS 11 ou posterior
Se for necessário usar extensões kernel, reveja os métodos de aprovação com base no método de registo.
Método de regiasro | Método de aprovação | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Not enrolled (Não registado) User Enrollment (Registo do utilizador) | Quando um novo kext é instalado e existe uma tentativa de o carregar, um reinício tem de ser iniciado pelo utilizador a partir da caixa de diálogo de aviso em:
Este reinício inicia a reconstrução do AuxKC antes do arranque do kernel. | ||||||||||
Device Enrollment (Registo do dispositivo) Automated Device Enrollment (Registo automático de dispositivos) | Sempre que um novo kext é instalado e existe uma tentativa de o carregar, um reinício tem de ser iniciado por uma das seguintes opções:
Nota: o serviço de gestão de dispositivos primeiro tem de instalar uma lista de permissões de kext que especifica o kext. Um Mac com o macOS 11.3 ou posterior permite, opcionalmente, que o serviço notifique o utilizador para concluir o reinício assim que for possível. |
Passos adicionais para adicionar kexts num Mac com Apple Silicon
Se estiver a adicionar extensões do kernel num Mac com Apple Silicon, tem de tomar passos adicionais.
Método de regiasro | Método de aprovação | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Not enrolled (Não registado) | A gestão de kext pelo utilizador exige um reinício com o recoveryOS para efetuar o downgrade das definições de segurança. O utilizador tem de premir e manter premido o botão de alimentação para reiniciar com o recoveryOS e efetuar a autenticação como administrador. O Secure Enclave apenas aceita a alteração de política aquando do arranque a partir do recoveryOS ao premir o botão de alimentação. Em seguida, o utilizador tem de selecionar a opção “Segurança reduzida” e a opção “Permitir a gestão de utilizador de extensões kernel de programadores identificados” e, depois, reiniciar o Mac. | ||||||||||
User Enrollment (Registo do utilizador) | O utilizador tem de reiniciar com o recoveryOS para efetuar o downgrade das definições de segurança. O utilizador tem de premir e manter premido o botão de alimentação para reiniciar com o recoveryOS e efetuar a autenticação como administrador local. O Secure Enclave apenas aceita a alteração de política aquando do arranque a partir do recoveryOS ao premir o botão de alimentação. Em seguida, o utilizador tem de selecionar “Segurança reduzida”, selecionar a opção “Permitir a gestão de utilizador de extensões kernel de programadores identificados” e, depois, reiniciar o Mac. | ||||||||||
Device Enrollment (Registo do dispositivo) | O serviço de gestão de dispositivos tem de avisar o utilizador para reiniciar com o recoveryOS para efetuar o downgrade das definições de segurança. O utilizador tem de premir e manter premido o botão de alimentação para reiniciar com o recoveryOS e efetuar a autenticação como administrador. O Secure Enclave apenas aceita a alteração de política ao premir o botão de alimentação. Em seguida, o utilizador tem de selecionar “Segurança reduzida”, selecionar a opção “Permitir a gestão remota de extensões kernel e atualizações de software automáticas” e, depois, reiniciar o Mac. Para saber se esta funcionalidade é compatível com os seus dispositivos, consulte a documentação do serviço de gestão de dispositivos do seu programador. | ||||||||||
Automated Device Enrollment (Registo automático de dispositivos) (O número de série do Mac tem de aparecer no Apple School Manager ou Apple Business Manager, e o Mac tem de estar registado num serviço de gestão de dispositivos associado ao Apple School Manager ou Apple Business Manager.) | Os serviços de gestão de dispositivos podem gerir isto automaticamente. Para saber se esta funcionalidade é compatível com os seus dispositivos, consulte a documentação do serviço de gestão de dispositivos do seu programador. |
Extensões kernel com proteção da integridade do sistema
Se a proteção de integridade do sistema (SIP) estiver ativada, a assinatura de cada kext é verificada antes de ser incluída no AuxKC.
Se a SIP estiver desativada, a assinatura de kext não é aplicada.
Esta abordagem permite fluxos de segurança permissiva para programadores e utilizadores que não fazem parte do programa da Apple para programadores para testar kexts antes de serem assinadas.