신뢰할 수 없는 코드 샌드박스는 소스 코드에 액세스할 수 없거나 소스 코드 평가를 수행할 리소스가 없는 타사 개발 소프트웨어를 사용해야 하는 경우에 유용합니다. 샌드박스는 자체 코드를 위한 추가 보안 경계로도 유용할 수 있습니다.

사용 사례에 따라 코드 포함에 다른 도구를 사용할 수 있습니다. 아래 표에는 여러 제품에 관한 개요와 관련 사용 사례가 나와 있습니다. 이러한 제품 중 일부는 Google 내에서 사용되고 Google 엔지니어가 개발하였습니다.

샌드박스2와 샌드박스 API는 Google 보안팀의 샌드박스 부문에서 개발한 두 제품입니다.

제품 설명 사용 사례
샌드박스2 네임스페이스, 리소스 한도, seccomp-bpf syscall 필터를 사용하는 Linux 샌드박스 샌드박스 처리된 API에 기본 샌드박스 기술을 제공합니다. 일반 샌드박스
gVisor 애플리케이션 커널 내에서 시스템 호출을 구현합니다. ptrace 또는 하드웨어 가상화를 사용하여 시스템 호출을 가로챕니다. 일반 샌드박스
버블랩 사용자 네임스페이스의 하위 집합으로 구현된 샌드박스 도구 Flatpak과 같은 실행 엔진으로 사용됩니다. CLI 도구
미니실 ChromeOS 및 Android에서 사용되는 샌드박스 및 포함 도구입니다. 다른 프로그램 및 코드를 실행하고 샌드박스로 실행하는 데 사용할 수 있는 실행 파일과 라이브러리를 제공합니다. CLI 도구
NSJail 네임스페이스, 리소스 한도, seccomp-bpf syscall 필터를 사용하여 Linux에서 프로세스를 격리합니다. 필요한 경우 커스텀 도메인별 언어인 Kafel을 활용하여 syscall 정책을 지정할 수 있습니다. CLI 도구
샌드박스 API 샌드박스2를 사용한 C/C++ 라이브러리용 재사용 가능한 샌드박스 C/C++ 코드
네이티브 클라이언트 지원 중단됨

x86 (NaCl)/LLVM 바이트 코드 (PNaCl)의 제한된 하위 집합으로 컴파일하여 C/C++ 바이너리를 샌드박스화하는 강력한 기술입니다.

Google의 후임자 (WebAssembly) 설계에 영향을 미쳤으며 대체했습니다.

C/C++ 코드
WebAssembly (WASM) 휴대용 바이너리의 바이너리 형식입니다. WASM 모듈은 격리된 런타임 환경에서 실행됩니다. C/C++ 코드
RLBox Native Client, WebAssembly 또는 원격 프로세스와 같은 다양한 실행 백엔드를 사용할 수 있는 샌드박스 API (C++17로 작성됨). C/C++ 코드
Flatpak 버블랩을 기반으로 빌드된 Linux 데스크톱 애플리케이션용 샌드박스입니다. 네이티브 앱 패키징과 배포에 중점을 둡니다. 데스크톱 애플리케이션

샌드박스2는 Linux용 오픈소스 C++ 보안 샌드박스입니다. 샌드박스2를 사용하면 런타임 환경을 정품 작업에 필요한 최소 수준으로 제한하여 잠재적인 코드 실행 취약점의 영향을 제한할 수 있습니다.

샌드박스2는 C/C++로 작성된 전체 프로그램 또는 프로그램의 일부를 샌드박스하는 데 사용할 수 있습니다.

샌드박스 처리된 API (SAPI)는 C/C++ 라이브러리를 샌드박스화하는 오픈소스 프로젝트입니다. 샌드박스 처리된 API로 샌드박스 처리된 라이브러리는 쉽게 재사용할 수 있으므로 향후 프로젝트에 대한 부담이 사라집니다. 샌드박스 처리된 API 이전에는 Google에서 사용할 수 있는 샌드박스에서 동일한 소프트웨어 라이브러리를 재사용했더라도 샌드박스로 의도된 프로젝트의 새 인스턴스마다 추가 구현 작업이 필요했습니다. 샌드박스 처리된 프로세스에 적용되는 샌드박스2 정책 및 기타 제한사항은 매번 다시 구현되어야 하며 코드의 신뢰할 수 있는 부분과 신뢰할 수 없는 부분 간의 데이터 교환 메커니즘을 처음부터 설계해야 합니다.