Das Ausführen von nicht vertrauenswürdigem Code in einer Sandbox ist nützlich, wenn Sie sich auf von Drittanbietern entwickelte Software verlassen müssen, bei der Sie keinen Zugriff auf Quellcode haben oder keine Ressourcen für eine Quellcodeprüfung haben. Sandboxing kann auch als zusätzliche Sicherheitsgrenze für Ihren eigenen Code nützlich sein.

Je nach Anwendungsfall sind verschiedene Tools für die Code-Einbindung verfügbar. Die folgende Tabelle bietet einen Überblick über verschiedene Produkte und ihren jeweiligen Anwendungsfall. Einige dieser Produkte werden innerhalb von Google verwendet und von Google-Entwicklern entwickelt.

Sandbox2 und Sandboxed API sind zwei Produkte, die von der Sandbox-Abteilung des Google-Sicherheitsteams entwickelt wurden.

Produkt Beschreibung Anwendungsfall
Sandbox 2 Linux-Sandboxing mit Namespaces, Ressourcenlimits und seccomp-bpf-Syscall-Filtern. Stellt die zugrunde liegende Sandbox-Technologie für die Sandboxed API bereit. Allgemeine Sandbox-Technologie
gVisor Implementiert Systemaufrufe innerhalb eines Anwendungs-Kernels. Erfasst Systemaufrufe über ptrace oder mit Hardwarevirtualisierung. Allgemeine Sandbox-Technologie
Bubble-Wrapping Sandbox-Tool mit einer Untergruppe von Nutzer-Namespaces implementiert. Wird als Ausführungs-Engine wie Flatpak verwendet. Befehlszeilentools
Minijail Die Sandboxing- und Einbindungstools, die in Chrome OS und Android verwendet werden. Stellt eine ausführbare Datei und eine Bibliothek zum Starten und Ausführen anderer Sandbox-Programme und -Code bereit. Befehlszeilentools
NS-Gefängnis Prozessisolierung für Linux mithilfe von Namespaces, Ressourcenlimits und seccomp-bpf-Syscall-Filtern. Kann optional Kafel verwenden, eine benutzerdefinierte domainspezifische Sprache, um Syscall-Richtlinien anzugeben. Befehlszeilentools
Sandbox-API Wiederverwendbare Sandboxen für C/C++ Bibliotheken mit Sandbox2 C/C++ Code
Nativer Client Eingestellt

Leistungsstarkes Verfahren, mit dem C/C++-Binärprogramme in einer Sandbox ausgeführt werden, indem eine eingeschränkte Teilmenge von x86-(NaCl)/LLVM-Bytecode (PNaCl) kompiliert wird.

Beeinflusstes Design seines Nachfolgers (WebAssembly) und weitgehend durch diese ersetzt.

C/C++ Code
WebAssembly (WASM) Ein Binärformat für mobile Binärprogramme. WASM-Module werden in isolierten Laufzeitumgebungen ausgeführt. C/C++ Code
RLBox Eine Sandbox-API (in C++17 geschrieben), die verschiedene Ausführungs-Back-Ends verwenden kann: Native Client, WebAssembly oder Remote-Prozesse. C/C++ Code
Flatpak Sie basiert auf Bubblewrap und bietet Sandboxing für Linux-Desktopanwendungen. Der Schwerpunkt liegt auf der Verpackung und dem Vertrieb nativer Apps. Desktopanwendungen

Sandbox2 ist eine Open-Source-C++-Sicherheits-Sandbox für Linux. Mit Sandbox2 können Sie die Laufzeitumgebung auf das Minimum beschränken, das für echte Vorgänge erforderlich ist. Dadurch werden die Auswirkungen potenzieller Sicherheitslücken bei der Codeausführung begrenzt.

Sandbox2 kann für das gesamte Sandbox-Programm oder Teile von Programmen, die in C/C++ geschrieben sind, verwendet werden.

Die Sandboxed API (SAPI) ist ein Open-Source-Projekt für Sandbox-C/C++-Bibliotheken. Bibliotheken, die in einer Sandbox ausgeführt werden, können problemlos wiederverwendet werden, sodass bei zukünftigen Projekten keine Probleme mehr auftreten. Vor der Nutzung der Sandbox Sandbox waren bei Google verfügbare Sandboxes bei jeder neuen Instanz eines Projekts, das in einer Sandbox ausgeführt werden sollte, zusätzliche Implementierungsarbeit erforderlich, selbst wenn dieselbe Softwarebibliothek wiederverwendet wurde. Sandbox2-Richtlinien und andere Einschränkungen, die für den Sandbox-Prozess gelten, mussten jedes Mal neu implementiert werden. Außerdem mussten die Datenaustauschmechanismen zwischen vertrauenswürdigen und nicht vertrauenswürdigen Teilen des Codes komplett neu gestaltet werden.