App Sandbox é um mecanismo de isolamento que restringe o acesso de uma aplicação ao sistema de arquivos, aos dados de outras aplicações e aos recursos do sistema operacional. Cada aplicação executa em seu próprio ambiente isolado com privilégios mínimos, solicitando acesso a capacidades adicionais por meio de permissões. De acordo com Apple Security Documentation (2025), Sandbox é um elemento fundamental de proteção de dados em plataformas móveis. App Sandbox impede o acesso não autorizado aos dados do usuário mesmo quando uma aplicação individual está comprometida.
Principais pontos
App Sandbox é um mecanismo de segurança arquitetural que isola cada aplicação em seu próprio ambiente de execução com acesso limitado aos recursos do sistema. O termo origina-se do conceito de caixa de areia infantil — um espaço seguro onde uma criança pode brincar sem acessar objetos perigosos. Da mesma forma, uma aplicação executa em um ambiente restrito sem acesso aos dados de outras aplicações ou componentes críticos do sistema.
O principal objetivo do Sandbox é a implementação do princípio do menor privilégio: cada aplicação recebe apenas os direitos necessários para executar suas funções declaradas. Mesmo que um invasor encontre uma vulnerabilidade em uma aplicação, a sandbox impede o acesso aos dados de outras aplicações, fotos, contatos ou arquivos do sistema. O dano é limitado aos limites de uma única aplicação.
Os sistemas operacionais móveis implementaram sandboxes antes dos desktop. iOS usa Sandbox desde o primeiro lançamento do SDK (2008), Android desde a versão 1.0 (2008), com reforço no Android 4.3 (2013) através do SELinux. Os sistemas desktop estão alcançando: macOS introduziu Sandbox em 2012, Windows introduziu aplicativos UWP isolados no Windows 8.
O isolamento na sandbox é alcançado através de uma combinação de vários mecanismos em diferentes níveis do sistema operacional. A nível do sistema de arquivos, cada aplicação recebe seu próprio diretório protegido ao qual apenas ela tem acesso completo. A nível de processos, um identificador único de usuário (UID) é usado para cada aplicação. A nível do kernel, o controle de acesso obrigatório (MAC) é aplicado através do SELinux ou mecanismos similares.
Cada aplicação recebe seu próprio diretório raiz no sistema de arquivos do dispositivo. No iOS, este é o diretório /var/mobile/Containers/Data/Application/{UUID}, no Android — /data/data/{package_name}. A aplicação pode ler e escrever arquivos apenas dentro deste diretório. O acesso a qualquer arquivo fora deste diretório é bloqueado a nível do kernel do sistema operacional.
O sistema também fornece diretórios compartilhados especiais com acesso limitado. No iOS, estes são o diretório Documents para dados do usuário, Library para configurações e Caches para arquivos temporários. No Android — armazenamento interno (getFilesDir) e armazenamento externo (getExternalFilesDir), cujo acesso não requer permissões adicionais.
No Android, cada aplicação executa como um processo Linux separado com um UID único (User ID). O UID é atribuído ao instalar a aplicação e permanece inalterado durante todo o seu ciclo de vida. Processos com UIDs diferentes são isolados uns dos outros a nível do kernel — eles não podem acessar a memória ou arquivos uns dos outros. Um mecanismo semelhante funciona no iOS através do kernel XNU e seu sistema de proteção.
Uma camada adicional de proteção no Android é fornecida pelo SELinux (Security-Enhanced Linux) em modo enforcing desde o Android 4.3. SELinux implementa controle de acesso obrigatório (MAC): cada ação do processo é verificada contra a política de segurança independentemente das permissões do proprietário do arquivo. Mesmo que uma aplicação execute com UID root, o SELinux pode bloquear o acesso a certos recursos.
A sandbox do iOS é considerada uma das mais rigorosas entre os sistemas operacionais móveis. Cada aplicação é isolada a nível de contêiner — uma área protegida do sistema de arquivos que não pode ser acessada por outras aplicações. O iOS usa uma combinação de controle de acesso obrigatório através da Sandbox Kernel Extension (Sandbox.kext) e o mecanismo de entitlements para conceder privilégios estendidos.
O contêiner de uma aplicação iOS consiste em vários diretórios com diferentes níveis de acesso. Documents — para dados do usuário que são preservados durante o backup via iCloud e iTunes. Library — para arquivos de configuração e cache. tmp — para dados temporários que o sistema pode excluir a qualquer momento. AppName.app — o próprio bundle da aplicação, que é somente leitura.
O acesso aos dados de outras aplicações é estritamente proibido. O iOS não fornece uma API para ler arquivos do contêiner de outra aplicação. A única forma de compartilhar dados é através de mecanismos do sistema: UIActivityViewController para compartilhamento, UIPasteboard para a área de transferência, App Groups para aplicações do mesmo desenvolvedor. Cada um desses mecanismos opera sob o controle do sistema operacional.
Capacidades estendidas além da sandbox padrão são fornecidas através de Entitlements — assinaturas digitais adicionadas à assinatura de código da aplicação. Por exemplo, o entitlement com.apple.security.application-groups permite que aplicações do mesmo grupo tenham um contêiner compartilhado. Notificações push, iCloud, Apple Pay — todos esses recursos requerem entitlements correspondentes.
É importante notar que entitlements no iOS não são a mesma coisa que permissões. As permissões são solicitadas ao usuário em tempo de execução (por exemplo, acesso à câmera), enquanto os entitlements são verificados pelo sistema no momento da instalação e não podem ser alterados pelo usuário. Entitlements são definidos pelo desenvolvedor e assinados pela Apple durante o processo de revisão da aplicação.
O Android usa um modelo de sandbox multicamadas baseado no kernel Linux. Cada aplicação executa como um usuário Linux separado com um UID único, o que fornece isolamento básico a nível de processos e arquivos. Camadas adicionais incluem SELinux para controle de acesso obrigatório e Permissões para controlar o acesso às APIs do sistema.
SELinux no Android executa em modo enforcing, o que significa a aplicação forçada das políticas de segurança. Cada aplicação recebe um contexto de segurança (security context) e todas as chamadas de sistema são verificadas contra a política. SELinux no Android contém mais de 1500 regras cobrindo o sistema de arquivos, comunicação entre processos, sockets e chamadas de sistema.
O isolamento de UID impede que uma aplicação acesse diretamente os arquivos de outra aplicação. Por exemplo, a aplicação A com UID 10001 não pode ler arquivos da aplicação B com UID 10002, mesmo se ambas estiverem executando sob a mesma conta de usuário do telefone. Este é o princípio básico de segurança multiusuário do Linux, adaptado para dispositivos móveis.
// Acesso ao diretório próprio da aplicação no Android
File appDir = context.getFilesDir();
File cacheDir = context.getCacheDir();
File externalDir = context.getExternalFilesDir(null);
// Tentar acessar o diretório de outra aplicação causará SecurityException
// File otherApp = new File("/data/data/com.other.app/shared_prefs/");
// Usando FileProvider para compartilhamento seguro de arquivos
Uri contentUri = FileProvider.getUriForFile(
context, "com.example.fileprovider", file
);
O Android fornece mecanismos adicionais para troca segura de dados entre aplicações. ContentProvider — um componente Android que permite a uma aplicação fornecer acesso aos seus dados a outras aplicações através de um URI estritamente definido. FileProvider — uma forma segura de compartilhar arquivos sem revelar caminhos do sistema de arquivos.
Apesar de App Sandbox ser um poderoso mecanismo de segurança, ele tem limitações fundamentais. A sandbox protege contra acesso horizontal (aplicação-para-aplicação), mas não contra acesso vertical (malware a nível do kernel ou acesso físico ao dispositivo). Com jailbreak ou acesso root, a sandbox pode ser contornada, pois o invasor obtém privilégios de superusuário.
A segunda limitação são as permissões maliciosas. Se um usuário conceder a uma aplicação acesso a contatos e microfone, a sandbox não pode impedir a coleta desses dados, pois a aplicação usa APIs legítimas do sistema. A proteção neste caso passa para o nível de conscientização do usuário e os processos de revisão da App Store e Google Play.
A terceira limitação é a interação entre sandboxes. Alguns serviços do sistema (NotificationListenerService, AccessibilityService) têm acesso estendido aos dados de outras aplicações. Um invasor poderia usar esses serviços para contornar a sandbox se obtiver as permissões apropriadas. Google e Apple atualizam constantemente as políticas para tais serviços.
Apesar das limitações, a sandbox é um componente crítico de segurança dos sistemas operacionais móveis. De acordo com o Android Security Report (2024), o isolamento da sandbox previne mais de 99% das tentativas de acesso entre aplicações. Em combinação com Code Signing, App Review e permissões em tempo de execução, Sandbox forma uma proteção multicamadas do dispositivo móvel moderno.
Perguntas frequentes
App Sandbox é um sistema de isolamento no qual cada aplicação opera em seu próprio espaço isolado, sem acesso aos dados de outras aplicações sem permissão explícita do usuário.
iOS usa isolamento de contêiner estrito através de Sandbox.kext e entitlements. Android usa separação de UID a nível do kernel Linux e SELinux. O princípio é o mesmo, mas a implementação e flexibilidade diferem.
Contornar a sandbox só é possível com jailbreak (iOS) ou acesso root (Android). Em dispositivos padrão sem modificação do SO, é impossível contornar a sandbox através de APIs legítimas.
iOS usa UIActivityViewController e App Groups. Android usa ContentProvider, FileProvider e Intents. Todos os mecanismos passam por APIs do sistema com controle de segurança.
O princípio significa que uma aplicação recebe apenas as permissões necessárias para seu funcionamento. O acesso a recursos adicionais é solicitado através de permissões e concedido pelo usuário.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também