O código não confiável de sandbox é útil quando você precisa depender de software desenvolvido por terceiros em que não tenha acesso ao código-fonte ou não tiver recursos para realizar uma avaliação de código-fonte. O sandbox também pode ser útil como um limite de segurança extra para seu próprio código.

Dependendo do caso de uso, há diferentes ferramentas disponíveis para a contenção de código. Veja na tabela abaixo uma visão geral de diferentes produtos e os casos de uso aplicáveis. Alguns desses produtos são usados dentro do Google e desenvolvidos por engenheiros do Google.

O Sandbox2 e a API Sandboxed são dois produtos desenvolvidos pela divisão do sandbox da equipe de segurança do Google.

Produto Descrição Caso de uso
Sandbox2 (em inglês) Sandbox do Linux usando namespaces, limites de recursos e filtros de syscall seccomp-bpf. Fornece a tecnologia de sandbox subjacente para a API no modo sandbox. Sandbox geral
gVisor (em inglês) Implementa chamadas do sistema dentro de um kernel de aplicativo. Intercepta chamadas de sistema usando ptrace ou com virtualização de hardware. Sandbox geral
Wrapper de balão Ferramenta de sandbox implementada com um subconjunto de namespaces do usuário. Usada como um mecanismo de execução, por exemplo, Flatpak. Ferramentas da CLI
Mínima Ferramenta de sandbox e de contenção usada no ChromeOS e no Android. Fornece um executável e uma biblioteca que pode ser usada para iniciar e colocar sandbox em outros programas e códigos. Ferramentas da CLI
NSJail (em inglês) Processo de isolamento para Linux usando namespaces, limites de recursos e filtros de syscall seccomp-bpf. Pode, opcionalmente, usar o Kafel, uma linguagem específica de domínio personalizado, para especificar políticas de syscall. Ferramentas da CLI
API no modo sandbox Sandboxs reutilizáveis para bibliotecas C/C++ usando o Sandbox2. Código C/C++
Cliente nativo Descontinuada

Técnica eficiente para binários C/C++ de sandbox compilando para um subconjunto restrito de bytecode x86 (NaCl)/LLVM (PNaCl).

Design influenciado do sucessor dele (WebAssembly) e amplamente substituído por ele.

Código C/C++
WebAssembly (WASM) Um formato binário para binários portáteis. Os módulos WASM são executados em ambientes de ambiente de execução isolados. Código C/C++
RLBox Uma API de sandbox (criada em C++17), que pode usar vários back-ends de execução: Cliente nativo, WebAssembly ou processos remotos. Código C/C++
Flatpak (link em inglês) Criado com base no Bubblewrap, fornece sandbox para aplicativos de área de trabalho do Linux. Enfatiza o empacotamento e a distribuição de apps nativos. Aplicativos para computador

O Sandbox2 é um sandbox de segurança em C++ de código aberto para Linux. Com o Sandbox2, é possível restringir o ambiente de execução ao mínimo necessário para operações genuínas, limitando o impacto de possíveis vulnerabilidades de execução do código.

O Sandbox2 pode ser usado para colocar programas inteiros ou partes de programas escritos em C/C++ no sandbox.

A API Sandboxed (SAPI) é um projeto de código aberto para bibliotecas C/C++ de sandbox. As bibliotecas no sandbox com a API Sandboxed podem ser facilmente reutilizadas, o que elimina a carga para projetos futuros. Antes da API sandbox, os sandboxes disponíveis para uso no Google exigiam trabalho adicional de implementação em cada nova instância de um projeto que deveria ser colocado no sandbox, mesmo que ele reutilizasse a mesma biblioteca de software. As políticas do Sandbox2 e outras restrições aplicadas ao processo sandbox precisaram ser implementadas novamente, e os mecanismos de troca de dados entre as partes confiáveis e não confiáveis do código precisaram ser projetados do zero.