Uma nova era dos escapes de sandbox no macOS: superfície de ataque negligenciada e mais de 10 novas vulnerabilidades descobertas
- Na maioria dos sistemas macOS, a maior parte dos processos é executada em um ambiente de sandbox restrito. Mesmo que um invasor obtenha execução remota de código (RCE), sua capacidade continua limitada. O próximo passo é contornar a sandbox para obter permissões de acesso a arquivos mais amplas.
- Ao revisar problemas existentes para encontrar vulnerabilidades de escape de sandbox, foram descobertas uma superfície de ataque negligenciada importante e novas técnicas de ataque. Com isso, foram encontradas várias novas vulnerabilidades de escape de sandbox: CVE-2023-27944, CVE-2023-32414, CVE-2023-32404, CVE-2023-41077, CVE-2023-42961, CVE-2024-27864, CVE-2023-42977 etc.
Sobre a sandbox do macOS
Sandbox de aplicativo
- Devido às exigências da Mac App Store, a maioria dos aplicativos é executada com restrições de sandbox de aplicativo. Aplicativos em sandbox precisam ter permissões específicas e, ao entrar na sandbox, ficam conteinerizados, com operações de arquivo restritas.
- Arquivos criados por aplicativos em sandbox ficam em quarentena por padrão, e o aplicativo em sandbox não pode remover esse atributo.
- Aplicativos sem sandbox podem acessar sem restrições todos os dados do usuário e recursos do sistema. Já os aplicativos com restrições de sandbox têm apenas acesso limitado.
- Processos filhos criados por fork herdam as restrições de sandbox do processo pai, mas processos iniciados por meio do
LaunchService.framework não herdam essas restrições.
Sandbox de serviço
- A maioria dos serviços daemon da Apple é executada no contexto de uma sandbox de serviço. Eles são restringidos por perfis de sandbox definidos em locais do sistema.
- A sandbox de serviço normalmente não é conteinerizada, e os arquivos por padrão não ficam em quarentena.
Superfície de ataque
Métodos tradicionais mais comuns
Ataque via LaunchService.framework
- Existe uma forma de atacar aplicativos sem sandbox por meio do framework LaunchService do sistema. Por exemplo, o CVE-2021-30864 permite manipular a variável de ambiente $HOME do aplicativo de sistema sem sandbox Terminal.app.
- É possível inserir e executar um novo aplicativo sem sandbox, mas aplicativos recém-inseridos ficam em quarentena, o que impede sua execução.
Ataque a serviços Mach acessíveis
- Existe uma forma de atacar serviços Mach acessíveis listados no perfil de sandbox de aplicativo. Todas as informações sobre serviços Mach do sistema ficam armazenadas no arquivo
/System/Library/xpc/launchd.plist.
Novo método negligenciado
- Serviços XPC existentes no domínio PID são serviços negligenciados. Eles são iniciados pelo aplicativo sob demanda e encerrados quando o aplicativo solicitante termina.
- Serviços XPC no domínio PID podem ser chamados a partir de aplicativos em sandbox, sem verificações adicionais de privilégio ou de sandbox.
Novas vulnerabilidades e exploits
Beta-No-CVE-1
- Essa vulnerabilidade afeta apenas versões beta do macOS Sonoma.
- A vulnerabilidade existe no serviço XPC
/System/Library/PrivateFrameworks/StorageKit.framework/XPCServices/storagekitfsrunner.xpc.
- Esse serviço pode ser executado sem restrições de sandbox e é capaz de executar comandos arbitrários do sistema.
Beta-No-CVE-2
- Essa vulnerabilidade também afeta apenas software beta.
- A vulnerabilidade existe no serviço XPC
/System/Library/PrivateFrameworks/AudioAnalyticsInternal.framework/XPCServices/AudioAnalyticsHelperService.xpc.
- É possível compactar um caminho arbitrário, e o arquivo zip gerado não fica em quarentena.
CVE-2023-27944
- A vulnerabilidade existe no serviço XPC
/System/Library/PrivateFrameworks/TrialServer.framework/XPCServices/TrialArchivingService.xpc.
- Esse serviço entra em sandbox de serviço, mas os arquivos inseridos não ficam em quarentena.
CVE-2023-32414
- A vulnerabilidade existe no serviço XPC
/System/Library/PrivateFrameworks/DesktopServicesPriv.framework/XPCServices/ArchiveService.xpc.
- Esse serviço entra em sandbox de serviço, mas os arquivos inseridos não ficam em quarentena.
CVE-2023-32404
- A vulnerabilidade existe no serviço XPC
/System/Library/PrivateFrameworks/WorkflowKit.framework/XPCServices/ShortcutsFileAccessHelper.xpc.
- Esse serviço pode ser executado sem restrições de sandbox e possui uma permissão TCC especial para acesso total ao disco.
CVE-2023-41077
- A vulnerabilidade existe no serviço XPC
/System/Library/Frameworks/ImageCaptureCore.framework/XPCServices/mscamerad-xpc.xpc.
- Esse serviço pode ser executado sem restrições de sandbox e possui permissões TCC especiais para acessar diretamente Fotos e volumes removíveis.
1 comentários
Comentários do Hacker News
Corrigir serviços XPC individualmente parece estranho, e isso aparenta ser um problema de projeto do próprio sandbox. Há questionamentos sobre por que tantos serviços XPC são acessíveis a partir de apps em sandbox
sandbox-execfaz esse processamentoO framework de segurança cria novos problemas, e não passa a sensação de que a segurança ficou realmente mais forte
É bem provável que continuem sendo encontrados defeitos relacionados a XPC, e espera-se uma sucessão contínua de CVEs a menos que a Apple reprojete sua abordagem de reforço dos serviços
Amo e odeio o sandbox ao mesmo tempo
O macOS não foi projetado para permissões granulares, e isso não pode simplesmente ser acrescentado por cima das tecnologias legadas do Mac OS e do NeXTSTEP
Também existem vulnerabilidades no iOS, que tem cerca de 2 bilhões de dispositivos ativos
Os serviços XPC no domínio PID são uma forma engenhosa de contornar as restrições do sandbox, e o patch da Apple parece um remendo provisório
Fica a dúvida se escapar do sandbox significa voltar a um estado sem sandbox ou passar para um estado com privilégios mais altos