Z-Jail: un sandbox de Linux con siete capas de defensa y sin dependencias externas

Fuentes: Z-Jail: a seven-layer Linux sandbox with zero external dependencies

Z-Jail es un entorno de pruebas para código nativo en Linux que aísla procesos mediante siete capas de defensa independientes y no requiere dependencias externas. El binario PIE ocupa unos 130 KiB y combina espacios de nombres (mount, pid, net, ipc y uts), pivot_root, eliminación total de capacidades con securebits bloqueados, la marca NO_NEW_PRIVS, un filtro seccomp-BPF con lista blanca de 15 llamadas al sistema y un motor de veredicto basado en evidencias (Truthimatics Public Version) con logging JSON y hash BLAKE2b del ejecutable.

El proyecto se sitúa entre bwrap, minimalista pero sin seccomp por defecto, y nsjail, más pesado y con dependencias. Frente a Firecracker, gVisor, bwrap y nsjail, Z-Jail prescinde de runtimes y complejas cadenas de build: se compila con un único make. Está orientado a pipelines de integración continua, retos de tipo CTF y evaluación de código donde se necesita defensa en profundidad sin recurrir a un runtime de contenedores.

Cada capa se aplica en un orden estricto: primero se imponen límites de recursos (setrlimit) y se cierran descriptores heredados; después se desactiva el volcado de núcleo, se ejecuta pivot_root para desligar el árbol de archivos del anfitrión, se activa NO_NEW_PRIVS, se eliminan todas las capacidades y, por último, se instala el filtro seccomp-BPF. El filtro permite únicamente operaciones como read, write, openat, close, lseek, brk, mmap (con restricciones de argumentos), munmap, execve, exit_group, rt_sigaction, rt_sigprocmask, getrandom, clock_gettime y fstat. Su corrección se valida con un test independiente (8/8 casos) que no requiere root.

El uso básico consiste en clonar el repositorio, ejecutar make y lanzar sudo ./z_jail --root=/ruta/al/rootfs --seccomp-enforce -- /bin/ls. Z-Jail publica además registros de auditoría en formato JSON con metadatos del sandbox y huella BLAKE2b-256 del binario ejecutado, lo que facilita la trazabilidad y reproducibilidad de cada ejecución.