A Microsoft descobriu uma vulnerabilidade que pode permitir que um invasor ignore a proteção de integridade do sistema (SIP) no macOS e execute operações arbitrárias em um dispositivo. Também encontramos uma técnica semelhante que pode permitir que um invasor eleve seus privilégios para fazer root em um dispositivo afetado.
Compartilhamos essas descobertas com a Apple por meio do Coordinated Vulnerability Disclosure (CVD) por meio do Microsoft Security Vulnerability Research (MSVR). Uma correção para esta vulnerabilidade, agora identificada como CVE-2021-30892 , foi incluída nas atualizações de segurança lançadas pela Apple em 26 de outubro de 2021.
SIP é uma tecnologia de segurança no macOS que restringe um usuário root de realizar operações que podem comprometer a integridade do sistema. Descobrimos a vulnerabilidade ao avaliar os processos autorizados a contornar as proteções SIP. Descobrimos que a vulnerabilidade está nos pacotes assinados pela Apple com scripts de pós-instalação que são instalados. Um agente malicioso pode criar um arquivo especialmente criado que sequestra o processo de instalação. Depois de contornar as restrições do SIP, o invasor pode instalar um driver de kernel malicioso (rootkit), sobrescrever arquivos de sistema ou instalar malware persistente e indetectável, entre outros.
Esta vulnerabilidade no nível do sistema operacional e outras que inevitavelmente serão descobertas aumentam o número crescente de vetores de ataque possíveis para os invasores explorarem. À medida que as redes se tornam cada vez mais heterogêneas, o número de ameaças que tentam comprometer dispositivos não Windows também aumenta. O Microsoft Defender for Endpoint no Mac permite que as organizações obtenham visibilidade e detectem ameaças em dispositivos macOS. Essa visibilidade se acumula no Microsoft Defender for Endpoint , que fornece às organizações um “painel de vidro único” onde podem detectar, gerenciar, responder e corrigir vulnerabilidades e ameaças em diferentes plataformas.
Nesta postagem do blog, compartilharemos algumas informações sobre o SIP, examinaremos os tipos comuns de desvios SIP divulgados anteriormente e apresentaremos os únicos que descobrimos.
Visão geral do SIP
Apresentado pela primeira vez pela Apple no macOS Yosemite, SIP também conhecido como “sem raiz”
- csr-active-config: bitmask de proteções habilitadas
- csr-data: armazena a configuração do netboot
Essas variáveis não podem ser modificadas legitimamente no modo de não recuperação. Portanto, a única maneira legítima de desabilitar o SIP é inicializando no modo de recuperação e desligando o SIP. A desativação do SIP é feita usando a ativação interna da ferramenta csrutil, que também pode exibir o status do SIP:
Figura 1: csrutil mostrando o status do SIP. Observe que o SIP não pode ser desativado no sistema operacional sem recuperação.
A csr-active-config variável bitmask NVRAM descreve as diferentes proteções que o SIP oferece. Embora não seja uma lista exaustiva, abaixo estão algumas menções honrosas; o resto pode ser examinado livremente no do código-fonte XNU :
bit csr-active-config NVRAM | Descrição |
CSR_ALLOW_UNTRUSTED_KEXTS | Controla o carregamento de extensões de kernel não confiáveis |
CSR_ALLOW_UNRESTRICTED_FS | Controla o acesso de gravação a locais restritos do sistema de arquivos |
CSR_ALLOW_TASK_FOR_PID | Controla se permite obter uma porta de tarefa para processos Apple (ou seja, invocar a task_for_pid API ) |
CSR_ALLOW_UNRESTRICTED_NVRAM | Controla o acesso irrestrito ao NVRAM |
CSR_ALLOW_KERNEL_DEBUGGER | Controla se permite a depuração do kernel |
O comprometimento de qualquer uma dessas proteções pode permitir que os invasores ignorem o SIP completamente. Alguns cenários incluem o seguinte:
- Carregar extensões de kernel não confiáveis pode comprometer o kernel e permitir que essas extensões executem operações sem qualquer verificação
Restrições do sistema de arquivos
- Ignorar as verificações do sistema de arquivos pode permitir que uma extensão do kernel imponha o SIP a si mesmo completamente
- Modificar livremente a NVRAM pode controlar o próprio SIP
Restrições do sistema de arquivos
Ao longo dos anos, a Apple fortaleceu o SIP contra ataques, melhorando as restrições. Uma das restrições SIP mais notáveis é a restrição do sistema de arquivos. Isso é especialmente importante para equipes vermelhas e agentes mal-intencionados, já que a quantidade de danos que alguém pode causar aos componentes críticos de um dispositivo se baseia diretamente em sua capacidade de gravar dados irrestritos no disco.
O arquivo /System/Library/Sandbox/rootless.conf geralmente controla quais arquivos são protegidos por SIP. Embora o referido arquivo também seja protegido por SIP, pode-se executá-lo usando ls com o -O sinalizador para listar quais arquivos estão protegidos de forma semelhante. Os arquivos protegidos por SIP possuem o marcador “restrito”.
Figura 2: Listagem /usr com a opção -O. /usr/local não é protegido por SIP, mas /usr/sbin é.
Os arquivos com o atributo estendido com.apple.rootless são igualmente protegidos por SIP. Obviamente, não há como adicionar esse atributo estendido a um arquivo de maneira legítima. Caso contrário, o malware pode usar o SIP para sua própria proteção. As restrições do sistema de arquivos são uma ótima maneira de restringir invasores. Por exemplo, muitos do /System diretório e seus subdiretórios são protegidos por SIP.
Figura 3: SIP bloqueando um registro malicioso do LaunchDaemon que é freqüentemente usado para persistência.
Direitos sem raiz
Como as restrições do sistema de arquivos são tão poderosas, a Apple deve considerar alguns casos excepcionais. Por exemplo, as atualizações do sistema requerem acesso irrestrito a diretórios protegidos por SIP. Portanto, a Apple introduziu um conjunto específico de direitos que ignoram as verificações SIP por design. Esses direitos são ajustados para verificações SIP específicas e apenas a Apple pode atribuí-los. Então, naturalmente, a Apple apenas atribui esses direitos aos seus processos.
Em nossa pesquisa, nos concentramos em dois direitos poderosos, que também foram alvos de caçadores de vulnerabilidade:
Direito | Descrição |
com.apple.rootless.install | Ignora completamente as verificações do sistema de arquivos SIP |
com.apple.rootless.install.inheritable | Herda com.apple.rootless.install para processos filho |
Figura 4: Um exemplo de processo intitulado “com.apple.rootless.install”
Um rápido resumo de notáveis desvios SIP
Antes de nossa descoberta, havia várias vulnerabilidades de desvio SIP interessantes já relatadas no passado. Nesta seção, categorizamos essas vulnerabilidades em várias classes e fornecemos um exemplo para cada uma. Observe que esta não é uma lista completa; por exemplo, excluímos vulnerabilidades envolvendo o próprio kernel porque o SIP protege apenas a área do usuário.
Abuso de bibliotecas dinâmicas
Anteriormente, os processos autorizados ainda podiam carregar bibliotecas dinâmicas arbitrárias. Um exemplo foi apresentado em 2016 , onde libBaseIA.dylib , que é local para o aplicativo, foi usado por um binário autorizado e pode estar infectado com código malicioso. Nesse ponto, o desvio SIP pode ser completamente implementado no dylib malicioso.
Montagem
Em uma atualização de segurança para OSX 10.11.2, a Apple corrigiu um bug de segurança que também foi abusado pelo malware MacDefender. A referida vulnerabilidade pode permitir que um arquivo .dmg malicioso seja montado (usando hdiutil) em uma pasta protegida por SIP, ignorando completamente as restrições do sistema de arquivos SIP.
Abuso de direitos
Os processos autorizados também têm sido fontes de contornos de segurança. Um exemplo notável é um bypass que usou o intitulado fsck_cs utilitário . O bypass explorou o fato de que fsck_cs seguiria links simbólicos e tentaria consertar o sistema de arquivos apresentado a ele.
Portanto, um invasor pode criar um apontar uma ligação simbólica de /dev/diskX para /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist e invocar fsck_cs sobre o primeiro. À medida que o Info.plist arquivo é corrompido, o sistema operacional não pode mais controlar as exclusões de extensão do kernel, ignorando o SIP.
A vulnerabilidade ‘Shrootless’
Ao avaliar os processos do macOS com direito a ignorar as proteções SIP, encontramos o daemon system_installd , que tem o poderoso com.apple.rootless.install.inheritable como autorização. Com esta autorização, qualquer processo filho de system_installd seria capaz de ignorar as restrições do sistema de arquivos SIP por completo.
Figura 5: direitos system_installd. Observe o “com.apple.rootless.install.inheritable”
Como o Microsoft Defender for Endpoint tem um componente pós-violação, decidimos examinar todos os processos filho de system_installd . Para nossa surpresa, vimos alguns casos que poderiam permitir que invasores abusassem de sua funcionalidade e contornassem o SIP.
Por exemplo, ao instalar um pacote assinado pela Apple (arquivo .pkg), o referido pacote invoca o system_installd , que então se encarrega de instalar o anterior. Se o pacote contiver scripts de pós-instalação, system_installd os executará invocando um shell padrão, que é zsh no macOS. Curiosamente, quando o zsh é iniciado, ele procura o arquivo /etc/ zshenv e
Portanto, para que os invasores executem operações arbitrárias no dispositivo, um caminho totalmente confiável que eles poderiam seguir seria criar um arquivo malicioso em /etc/zshenv e esperar que o system_installd invoque o zsh .
Para criar um exploit de prova de conceito (POC) totalmente funcional, implementamos o seguinte algoritmo:
- Baixe um pacote assinado pela Apple (usando wget ) que é conhecido por ter um script de pós-instalaçã;
- Instale um /etc/zshenv malicioso que verifique seu processo pai; se for um system_installd, então ele gravaria em locais restritos;
- Invocar o instalador utilitário para instalar o pacot.
Conforme visto na Figura 6 abaixo, o exploit POC foi capaz de substituir a lista de exclusão de extensão do kernel:
Figura 6: Nosso exploit POC substituindo a lista de exclusão de extensão do kernel com dados arbitrários
zshenv como técnica de ataque
Durante nossa pesquisa, também descobrimos que zshenv também pode ser usado como uma técnica de ataque geral, além de ser usado para um desvio SIP. Descobrimos que em /etc/zshenv tem um equivalente para cada perfil de usuário em ~ / .zshenv , que tem a mesma função e comportamento, mas não requer permissões de root para gravar.
Geralmente, zshenv pode ser usado da seguinte forma:
- Um mecanismo de persistência. Ele poderia simplesmente esperar o zsh iniciar (globalmente em /etc ou por usuário).
- Um mecanismo de elevação de privilégio. O diretório inicial não muda quando um usuário administrador passa a root usando sudo -s ou sudo <comando> . Portanto, colocar um ~/ .zshenv no arquivo como administrador e aguardar que o administrador use o sudo posteriormente acionaria o ~/ .zshenv no arquivo , elevando-o à raiz.
Compartilhamos nossas descobertas com a Apple por meio do Coordinated Vulnerability Disclosure (CVD) por meio do Microsoft Security Vulnerability Research (MSVR). Queremos agradecer à equipe de segurança do produto da Apple por seu profissionalismo e capacidade de resposta na correção do problema.
Fortalecimento da segurança do dispositivo por meio de gerenciamento de vulnerabilidade e monitoramento comportamental
A tecnologia de segurança, como SIP em dispositivos macOS, atua como a proteção de linha de base integrada do dispositivo e a última linha de defesa contra malware e outras ameaças de segurança cibernética. Infelizmente, os agentes mal-intencionados continuam a encontrar maneiras inovadoras de romper essas barreiras pelos mesmos motivos. Eles podem assumir o controle total do dispositivo e executar quaisquer arquivos ou processos que desejam sem serem detectados pelas soluções de segurança tradicionais.
Nossa pesquisa sobre a vulnerabilidade CVE-2021-30892 exemplifica isso. Ele destaca a necessidade de as organizações terem uma solução de segurança como o Microsoft Defender for Endpoint, que as capacite a descobrir e corrigir vulnerabilidades por meio do gerenciamento de ameaças e vulnerabilidades . Isso permite que os defensores detectem vulnerabilidades e configurações incorretas em dispositivos em tempo real e priorizem o que precisa ser resolvido imediatamente com base no cenário de ameaças, contexto de negócios e outros fatores.
Além disso, o Microsoft Defender for Endpoint usa análise comportamental avançada e aprendizado de máquina para detectar atividades anômalas em um dispositivo, como sobrescrever arquivos arbitrários protegidos por SIP que nosso exploit POC é capaz. No exemplo fornecido na seção anterior, é anômalo para zsh substituir a lista de exclusão de extensão do kernel. Como tal, o Defender for Endpoint o detecta. Estendendo o conceito, o Defender for Endpoint tem detecções semelhantes para acesso a arquivos confidenciais, incluindo daemons de inicialização do sistema, o rootless.conf arquivo e muitos mais.
Finalmente, esta pesquisa destaca a importância da colaboração entre pesquisadores de segurança, fornecedores de software e a comunidade de segurança em geral. À medida que as ameaças de plataforma cruzada continuam a aumentar, as descobertas de vulnerabilidade, resposta coordenada e outras formas de compartilhamento de inteligência de ameaças ajudam a enriquecer nossas tecnologias de proteção que protegem a experiência de computação dos usuários, independentemente da plataforma ou dispositivo que estejam usando.
Este artigo é uma tradução de: https://www.microsoft.com/security/blog/2021/10/28/microsoft-finds-new-macos-vulnerability-shrootless-that-could-bypass-system-integrity-protection/ (Autor: Jonathan Bar )