Изолировать ненадежный код в песочнице полезно, когда вам приходится полагаться на стороннее программное обеспечение, если у вас нет доступа к исходному коду или у вас нет ресурсов для выполнения оценки исходного кода. Песочница также может быть полезна в качестве дополнительной границы безопасности для вашего собственного кода.

В зависимости от вашего варианта использования доступны различные инструменты для сдерживания кода. В таблице ниже представлен обзор различных продуктов и вариантов их использования. Некоторые из этих продуктов используются в Google и разработаны инженерами Google.

Sandbox2 и Sandboxed API — это два продукта, разработанных отделом песочницы команды безопасности Google.

Товар Описание Пример использования
Песочница2 Песочница Linux с использованием пространств имен, ограничений ресурсов и фильтров системных вызовов seccomp-bpf. Предоставляет базовую технологию песочницы для Sandboxed API. Общая песочница
gVisor Реализует системные вызовы в ядре приложения. Перехватывает системные вызовы с помощью ptrace или аппаратной виртуализации. Общая песочница
пузырчатая пленка Инструмент песочницы, реализованный с подмножеством пространств имен пользователей. Используется в качестве исполняющего движка, например, Flatpak. Инструменты командной строки
Минитюрьма Инструмент песочницы и локализации, используемый в ChromeOS и Android. Предоставляет исполняемый файл и библиотеку, которые можно использовать для запуска и песочницы других программ и кода. Инструменты командной строки
NSJail Изоляция процессов для Linux с помощью пространств имен, ограничений ресурсов и фильтров системных вызовов seccomp-bpf. При желании можно использовать Kafel , язык для пользовательского домена, для указания политик системных вызовов. Инструменты командной строки
Песочница API Повторно используемые песочницы для библиотек C/C++ с использованием Sandbox2. Код С/С++
Собственный клиент Устаревший

Мощный метод изолирования двоичных файлов C/C++ путем компиляции в ограниченное подмножество байт-кода x86 (NaCl)/LLVM (PNaCl).

Повлиял на дизайн своего преемника (WebAssembly) и в значительной степени заменил его.

Код С/С++
Веб-сборка (WASM) Двоичный формат для переносимых двоичных файлов. Модули WASM выполняются в изолированных средах выполнения. Код С/С++
РЛбокс API песочницы (написанный на C++17), который может использовать различные серверные части выполнения: собственный клиент, WebAssembly или удаленные процессы. Код С/С++
Плоский пакет Построенный на основе Bubblewrap, обеспечивает песочницу для настольных приложений Linux. Делает акцент на упаковке и распространении нативных приложений. Настольные приложения

Sandbox2 — это изолированная программная среда безопасности C++ с открытым исходным кодом для Linux. С помощью Sandbox2 вы можете ограничить среду выполнения до минимума, необходимого для реальных операций, тем самым ограничивая влияние потенциальных уязвимостей выполнения кода.

Sandbox2 можно использовать для изолирования целых программ или их частей, написанных на C/C++.

Sandboxed API (SAPI) — это проект с открытым исходным кодом для изолированных библиотек C/C++. Библиотеки, помещенные в песочницу с помощью Sandboxed API, можно легко использовать повторно, что снимает нагрузку с будущих проектов. До появления Sandboxed API песочницы, доступные для использования в Google, требовали дополнительной работы по реализации с каждым новым экземпляром проекта, который должен был быть помещен в песочницу, даже если в нем повторно использовалась одна и та же программная библиотека. Политики Sandbox2 и другие ограничения, накладываемые на изолированный процесс, приходилось каждый раз реализовывать заново, а механизмы обмена данными между доверенными и недоверенными частями кода приходилось разрабатывать с нуля.