Le bac à sable du code est utile lorsque vous devez utiliser un logiciel tiers développé lorsque vous n'avez pas accès au code source ou que vous ne disposez pas des ressources nécessaires pour effectuer une évaluation du code source. Le système de bac à sable peut également servir de limite de sécurité supplémentaire pour votre propre code.

Différents outils sont disponibles selon votre cas d'utilisation pour contenir le code. Le tableau ci-dessous donne un aperçu des différents produits et de leur cas d'utilisation applicable. Certains de ces produits sont utilisés par Google et développés par des ingénieurs Google.

Sandbox2 et l'API Sandbox sont deux produits développés par la division bac à sable de l'équipe de sécurité Google.

Produit Description Exemple d'utilisation
Bac à sable2 Bac à sable Linux utilisant des espaces de noms, des limites de ressources et des filtres syscom seccomp-bpf Fournit la technologie de bac à sable sous-jacente pour l'API en bac à sable. Bac à sable général
gVisor Met en œuvre les appels système dans un noyau d'application. intercepte les appels système à l'aide de ptrace ou via la virtualisation matérielle. Bac à sable général
Papier à bulles Outil de bac à sable implémenté avec un sous-ensemble d'espaces de noms utilisateur Utilisé comme moteur d'exécution (par exemple, Flatpak). Outils CLI
Mini-prison Outil de conteneur et de bac à sable utilisé dans Chrome OS et Android Fournit un exécutable et une bibliothèque qui peut servir à lancer d'autres programmes et codes dans un bac à sable. Outils CLI
NSJAIL Isolation de processus pour Linux à l'aide d'espaces de noms, de limites de ressources et de filtres système seccomp-bpf Peut éventuellement utiliser Kafel, un langage personnalisé spécifique au domaine, pour spécifier des règles d'appel système. Outils CLI
API en bac à sable Bacs à sable réutilisables pour les bibliothèques C/C++ à l'aide de Sandbox2 Code C/C++
Client natif Obsolète

Technique performante pour compiler des binaires C/C++ en bac à sable en compilant sur un sous-ensemble restreint d'octets x86 (NaCl)/LLVM (NNaCl).

Conception influencée par son successeur (WebAssembly) et largement remplacé par celui-ci.

Code C/C++
WebAssembly (WASM) Format binaire pour les binaires portables. Les modules WASM sont exécutés dans des environnements d'exécution isolés. Code C/C++
RLBox API de bac à sable (écrite en C++ 17) qui peut utiliser divers backends d'exécution : client natif, WebAssembly ou processus distants Code C/C++
Plat Basé sur Bubblewrap, il offre un système de bac à sable pour les applications de bureau Linux. L'accent est mis sur l'empaquetage et la distribution d'applications natives. Applications de bureau

Sandbox2 est un bac à sable de sécurité C++ Open Source pour Linux. Avec Sandbox2, vous pouvez limiter l'environnement d'exécution au minimum requis pour les opérations réelles, ce qui limite l'impact des failles potentielles d'exécution du code.

Sandbox2 peut être utilisé pour bac à sable entier ou pour des parties de programmes écrits en C/C++.

L'API Sandboxed est un projet Open Source destiné aux bibliothèques C/C++ en bac à sable. Les bibliothèques en bac à sable avec l'API Sandbox peuvent facilement être réutilisées, ce qui élimine la charge des projets à venir. Avant l'utilisation de l'API Sandbox, les bacs à sable utilisables par Google nécessitaient des tâches d'implémentation supplémentaires pour chaque nouvelle instance d'un projet destiné à être exécuté en bac à sable, même s'il réutilisait la même bibliothèque logicielle. Les règles de bac à sable 2 et d'autres restrictions appliquées au processus en bac à sable devaient être réappliquées à chaque fois. De plus, les mécanismes d'échange de données entre des parties de code fiables et non approuvées devaient être intégralement conçus.