1 pontos por GN⁺ 2024-11-09 | 1 comentários | Compartilhar no WhatsApp

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

 
GN⁺ 2024-11-09
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

    • O macOS deveria ter contêineres Darwin baseados em capacidades, e não em lista de bloqueio
    • A SBPL (linguagem de perfil de sandbox) é interessante. Há informações relacionadas disponíveis no GitHub
    • Fica a dúvida se existe um interpretador Scheme no macOS para processar a SBPL
    • Parece que sandbox-exec faz esse processamento
  • O framework de segurança cria novos problemas, e não passa a sensação de que a segurança ficou realmente mais forte

    • É uma sequência de remendos, como o código tributário da Holanda, e já parece até ter adquirido consciência própria
  • É 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 sandbox é uma ótima segunda linha de defesa, mas grandes empresas se recusam a corrigir RCE quando não é possível escapar do sandbox e acabam usando isso como defesa principal
  • 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

    • Como desenvolvedor de apps, e não pesquisador de segurança, encontrei várias formas de contorno, mas desisti porque o sistema da Apple para relatar vulnerabilidades de segurança é ineficiente
    • O macOS virou vítima de teatro de segurança e isso está prejudicando usuários e desenvolvedores
  • 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

    • É necessário redesenhar por completo a forma como a herança do sandbox funciona
  • 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