La zona de pruebas es un código no confiable que resulta útil cuando tiene que depender de software desarrollado por terceros en el que no tiene acceso al código fuente o no tiene recursos para realizar una evaluación del código fuente. Las zonas de pruebas también pueden ser útiles como límite de seguridad adicional para tu propio código.

Según tu caso de uso, hay diferentes herramientas disponibles para la contención de código. En la siguiente tabla, se proporciona una descripción general de los diferentes productos y su caso práctico aplicable. Algunos de estos productos se utilizan en Google y los desarrollan los ingenieros de Google.

Sandbox2 y Sandboxed API son dos productos desarrollados por la división de zona de pruebas del equipo de seguridad de Google.

Product Descripción Caso de uso
Zona de pruebas2 Zona de pruebas de Linux con espacios de nombres, límites de recursos y filtros de llamada de sistema seccomp-bpf. Proporciona la tecnología de zona de pruebas subyacente para la API de Sandboxed. Zona de pruebas general
gVisor Implementa llamadas al sistema dentro de un kernel de aplicación. Intercepta las llamadas al sistema mediante ptrace o con virtualización de hardware. Zona de pruebas general
Envoltorio de burbujas Herramienta de zona de pruebas implementada con un subconjunto de espacios de nombres de usuarios. Se usa como motor de ejecución, por ejemplo, Flatpak. Herramientas de CLI
Minijail La herramienta de zona de pruebas y contención utilizada en Chrome OS y Android. Proporciona un ejecutable y una biblioteca que se puede usar para iniciar y ejecutar la zona de pruebas de otros programas y códigos. Herramientas de CLI
Jail Procesar el aislamiento en Linux mediante el uso de espacios de nombres, límites de recursos y filtros de llamada de sistema seccomp-bpf De forma opcional, puedes usar Kafel, un lenguaje específico de dominio personalizado, para especificar políticas de llamada del sistema. Herramientas de CLI
API de Sandboxed Zonas de pruebas reutilizables para bibliotecas C/C++ con Sandbox2 Código C/C++
Native Client Obsoleto

Técnica potente para objetos binarios de C/C++ en la zona de pruebas mediante la compilación en un subconjunto restringido de código de bytes x86 (NaCl)/LLVM (PNaCl).

Se influyó en el diseño de su sucesor (WebAssembly) y se lo reemplazó en gran medida.

Código C/C++
WebAssembly (WASM) Un formato binario para objetos binarios portátiles. Los módulos de WASM se ejecutan en entornos de ejecución aislados. Código C/C++
RLBox Una API de zona de pruebas (escrita en C++17), que puede usar varios backends de ejecución: cliente nativo, WebAssembly o procesos remotos. Código C/C++
FlatPak Se basa en Bubblewrap y proporciona zonas de pruebas para aplicaciones de escritorio de Linux. Pone énfasis en el empaquetado y la distribución de aplicaciones nativas. Aplicaciones de escritorio

Sandbox2 es una zona de pruebas de seguridad C++ de código abierto para Linux. Con Sandbox2, puedes restringir el entorno de ejecución al mínimo requerido para operaciones genuinas, lo que limitará el impacto de posibles vulnerabilidades de ejecución de código.

Sandbox2 se puede utilizar para poner en práctica zonas de pruebas completas o partes de programas escritas en C/C++.

La API de Sandboxed (SAPI) es un proyecto de código abierto para bibliotecas C/C++ de zona de pruebas. Las bibliotecas con zona de pruebas mediante la API de Sandboxed se pueden reutilizar fácilmente, lo que elimina la carga de trabajo para futuros proyectos. Antes de la API de Sandboxed, las zonas de pruebas disponibles para usar en Google requerían un trabajo de implementación adicional con cada instancia nueva de un proyecto que se pretendía diseñar como zona de pruebas, incluso si se reutilizaba la misma biblioteca de software. Las políticas de la zona de pruebas y otras restricciones aplicadas al proceso de la zona de pruebas debían volver a implementarse cada vez, y los mecanismos de intercambio de datos entre las partes confiables y no confiables del código debían diseñarse desde cero.