Pular para o conteúdo principal

App Sandbox e Entitlements

O App Sandbox é um mecanismo oficial da Apple e parte do modelo de segurança do iOS. Ele garante que cada aplicação rode em um ambiente isolado, com acesso restrito a recursos do sistema e a dados de outros apps. Essa garantia vem da integração entre três componentes, o kernel XNU, que impõe o isolamento em nível de sistema, os perfis de sandbox conhecidos como Seatbelt, que definem regras específicas de acesso para cada aplicação, e o code signing com entitlements, que determina explicitamente quais recursos e capacidades o app está autorizado a usar.

App Container

Cada aplicação roda dentro de um container isolado, o que impede o acesso direto a dados de outros aplicativos, restringe a interação com o sistema de arquivos global e bloqueia a comunicação direta com processos de outros apps. Na prática, isso garante um forte isolamento entre aplicações no mesmo sistema.

Cada app recebe um diretório próprio dentro do dispositivo:

$ ls -l /var/mobile/Containers/Data/Application/<UUID>/
Documents/
Library/
tmp/

Cada pasta dentro de /var/mobile/Containers/Data/Application/ representa um desses containers isolados, um por aplicação instalada.

Entitlements

Aplicações no iOS não acessam recursos livremente. Para usar funcionalidades sensíveis, é preciso obter permissões explícitas, e esse controle é feito através de dois mecanismos combinados, os Entitlements, definidos durante o processo de assinatura do app, e o sistema TCC, sigla para Transparency, Consent and Control, responsável por gerenciar o consentimento do usuário em tempo de execução. Ambos são mecanismos oficiais da Apple e fundamentais para o controle de acesso a recursos no sistema.

Alguns exemplos de recursos controlados por esse modelo são câmera, microfone, localização, contatos, fotos e bluetooth.

Por que isso importa para pentest

Durante uma análise de app, os entitlements declarados no embedded.mobileprovision são um dos primeiros lugares a checar, já que revelam exatamente quais capacidades o app está autorizado a usar, como acesso ao Keychain compartilhado, push notifications ou iCloud. Discrepâncias entre os entitlements declarados e o comportamento observado do app costumam indicar configurações mal gerenciadas, ou até capacidades concedidas além do que o app realmente precisa.

Referências