Como o Sandboxing de Aplicativos do macOS Protege os Usuários

Introduzido em 2007 e exigido a partir de 2012, o sandboxing é uma ferramenta usada pelo macOS para limitar os danos que um aplicativo sequestrado pode causar. A Apple diz: “Embora o App Sandbox não previna ataques contra seu aplicativo, ele minimiza o dano que um ataque bem-sucedido pode causar. O sandboxing de aplicativos do macOS protege os usuários limitando o quanto um aplicativo pode causar problemas.

Leia também: 4 dos Melhores Aplicativos Sandbox para Windows para Manter Você Seguro

O que é o Sandboxing de Aplicativos do macOS?

Cada aplicativo tem sua própria área para operar: um “sandbox”. Se o aplicativo quiser acessar fora de seu sandbox, ele precisa pedir permissão ao sistema operacional. Dependendo das configurações do sandbox, o SO negará ou aprovará o pedido do aplicativo, fornecendo a menor quantidade de informações possível para completar o pedido.

about-sandboxing

Pense em um carro. O motorista é protegido por múltiplos recursos de segurança, como freios anti-bloqueio, airbags, zonas de deformação e mais. Em 2007, época da introdução do App Sandboxing, não existiam sistemas de computador análogos. Como a apresentação introdutória perguntou, onde estavam os cintos de segurança para computadores? O sandboxing protege os usuários como os carros protegem seus motoristas: enfrentando falhas com sistemas de redução de danos. Seja causado por atividade maliciosa ou erros de codificação, os danos diminuem.

Como o sandboxing limita o que os aplicativos podem fazer, ele pode restringir a liberdade do desenvolvedor. Aplicativos em sandbox funcionam mais lentamente e levam mais tempo para serem desenvolvidos. Graças à enorme capacidade do Mac, os limites do sandbox podem ter um grande impacto na compatibilidade de vários aplicativos. Como resultado, usuários avançados são frequentemente levados a escolher aplicativos que funcionam fora do sandbox, seja por questões de desempenho ou de recursos.

Como Funciona o Sandboxing de Aplicativos?

O sandboxing é baseado no princípio do menor privilégio. Em resumo, os sistemas podem fazer o que precisam fazer, mas não mais do que isso. Ao limitar cada parte de um sistema a completar apenas seu objetivo declarado, você reduz a chance de seu aplicativo ser sequestrado. Por exemplo, não há razão para um aplicativo de lanterna ter acesso à sua lista de contatos.

Os aplicativos podem acessar fora de seu sandbox, mas apenas com a permissão do sistema operacional. Pegue a caixa de diálogo “Salvar e Abrir” no macOS. O aplicativo, dentro de seu sandbox, não pode acessar diretamente os recursos do sistema de arquivos em seu disco rígido. Ele não pode, por exemplo, abrir um painel em “~/Documents.” Em vez disso, o aplicativo deve pedir ao Powerbox API com as classes NSOpenPanel e NSSavePanel para acessar o painel.

macos-app-sandboxing-powerbox-design

O aplicativo não pode ver o que está acontecendo dentro do Powerbox diretamente. Apenas o arquivo aberto ou salvo será acessível ao aplicativo. Dessa forma, os aplicativos podem realizar funções críticas sem riscos desnecessários.

Essa funcionalidade é habilitada por uma concessão (especificamente com.apple.security.files.user-selected.read-write). Os desenvolvedores de aplicativos definem concessões que declaram o que um aplicativo faz. Com base nas concessões declaradas, o sistema operacional permite ao aplicativo um nível de funcionalidade adequadamente limitado.

Esse raciocínio fundamenta todo o modelo e mecanismo de sandboxing de aplicativos: os aplicativos devem declarar intenção e pedir permissão a um chefe de nível de SO para realizar qualquer coisa perigosa.

Aplicativos em Sandbox vs. Aplicativos Não-Sandbox

Desde 1º de junho de 2012, todos os aplicativos de terceiros distribuídos através da Mac App Store devem ser sandboxed. Embora o sandboxing permita uma ampla gama de funcionalidades de aplicativos, você encontrará que os aplicativos da Mac App Store são frequentemente mais limitados do que seus componentes não-sandboxed. Alguns desenvolvedores até mantêm duas versões: um aplicativo totalmente funcional para download direto e uma versão limitada para a Mac App Store. Graças à maior complexidade do desenvolvimento em sandbox, adicionar novas funcionalidades a um aplicativo é mais difícil – se essa funcionalidade for até permitida pelo SO, é claro.

Embora aplicativos em sandbox possam obter o benefício da distribuição pela Mac App Store, você pode adivinhar quão valioso achamos isso. O sandboxing também pode ser estendido com permissões de segurança. Embora um aplicativo não possa ativar permissões de Acessibilidade para si mesmo, ele pode pedir ao usuário para fazê-lo.

macos-security-privacy-permissions-hero

Para ver quais de seus aplicativos estão em sandbox, abra o Monitor de Atividade e clique com o botão direito nos títulos das colunas para adicionar “Sandbox” à janela.

macos-app-sandboxing-activity-monitor-view

Existem alguns aplicativos que simplesmente nunca poderão existir em um sandbox. Na verdade, uma variedade de casos de uso valiosos é impedida pelo sandboxing. O sandboxing impede a comunicação, observação ou modificação entre aplicativos, limitando significativamente como os aplicativos podem interagir. Atalhos de sistema como o TextExpander são totalmente proibidos, uma vez que esse nível de funcionalidade poderia ser permitido pelo sandbox.

Conclusão

Embora promissor, o sandboxing de aplicativos do macOS não foi executado bem. Ele limitou os pontos de venda exclusivos dos aplicativos do Mac, como velocidade e funcionalidade aprimorada. Aplicativos que funcionam fora do sandbox são quase sempre mais capazes e rápidos. Da perspectiva deste usuário avançado, meus aplicativos mais utilizados são não-sandboxed. Aplicativos como TextExpander, SnagIt e TotalFinder são todos cruciais para meu trabalho diário. Para evitar uma evitação generalizada semelhante, futuros sistemas de segurança precisam de flexibilidade e poder equilibrados com transparência.

Crédito da imagem: Apple