Saltar a contenido

Sandboxing

Categoría Contención y aislamiento de ejecución
Enfoque Seguridad de sistemas / Contención
Autor / Colaborador @viviana-lab

📖 Definición

Sandboxing es una técnica de seguridad que consiste en ejecutar un programa, un proceso, un navegador, un script o incluso una aplicación completa dentro de un entorno restringido y aislado del resto del sistema. El objetivo es limitar su capacidad de interactuar con recursos críticos del host, reducir el impacto de un fallo o de un código malicioso y controlar de forma explícita qué archivos, redes o llamadas al sistema puede utilizar.

En esencia, el sandbox actúa como una «caja de seguridad»: todo lo que ocurre dentro de él está sometido a políticas estrictas de ejecución, privilegios, red, almacenamiento y observabilidad. Si un componente se ve comprometido, el daño potencial queda acotado al propio sandbox y no se extiende libremente al sistema operativo o a otros servicios.

Importante

El sandboxing no elimina la vulnerabilidad en sí, pero sí reduce drásticamente su radio de impacto y ayuda a contener amenazas, análisis de malware, ejecución de código no confiable y errores de configuración.


⚙️ ¿Cómo funciona? / Principios fundamentales

La efectividad del sandboxing se basa en combinar varias capas de contención y control:

  1. Aislamiento del proceso: Se utiliza separación de espacios de ejecución, como namespaces y control de montaje, para que el proceso vea solo un subconjunto del sistema de archivos, de la red y de otros recursos.
  2. Reducción de privilegios: La aplicación se ejecuta como un usuario no privilegiado, con capacidades mínimas y sin permisos administrativos sobre el sistema host.
  3. Filtrado de llamadas al sistema: Técnicas como seccomp-bpf, AppArmor o SELinux bloquean o permiten únicamente las syscalls necesarias para el software.
  4. Límites de recursos: Se imponen restricciones de CPU, memoria, E/S, número de procesos y uso de red para evitar abuso o denegación de servicio.
  5. Monitoreo y auditoría: Se registran eventos, accesos y comportamientos para detectar desviaciones o intentos de escape del sandbox.
graph TD
    A[Aplicación o código no confiable] --> B[Sandbox]
    B --> C[Sistema de archivos aislado]
    B --> D[Red limitada]
    B --> E[Syscalls filtradas]
    B --> F[Privilegios reducidos]
    F --> G[Host protegido]

🛡️ Tipos de sandboxing

Tipo Descripción Ejemplo común
Sandbox de navegador Aísla páginas web, scripts y plugins del sistema operativo. Chrome / Chromium / Firefox
Sandbox de aplicación Ejecuta un programa en un entorno con permisos y acceso mínimos. Ejecutables de usuarios, plugins, visualizadores
Sandbox de contenedores Aísla procesos mediante namespaces, cgroups y políticas de seguridad. Docker, Kubernetes, OCI
Máquina virtual Aísla completamente el sistema operativo en un hipervisor. QEMU, Hyper-V, VMware
Sandbox de malware / análisis Permite ejecutar código sospechoso sin poner en riesgo el entorno real. Entornos de análisis de malware

🎯 Ejemplo práctico o escenario de demostración

Un entorno de contenedores puede reforzar el sandboxing con políticas de seguridad para evitar que una aplicación comprometida acceda al anfitrión o a otros servicios.

docker run --privileged --network host --pid host \
  --cap-add SYS_ADMIN \
  -v /:/host \
  vulnerable-app:latest

En este caso, el contenedor tiene casi todo el poder del host. Un fallo de seguridad o ejecución de código malicioso podría escalar el impacto de forma significativa.

docker run --rm --read-only \
  --network none \
  --cap-drop ALL \
  --security-opt no-new-privileges:true \
  --pids-limit 128 \
  --memory 256m \
  app-sandboxed:latest

Aquí el contenedor queda aislado por defecto: sin privilegios, sin acceso de red, con límites de memoria y procesos, y sin posibilidad de elevar permisos durante la ejecución.


🛡️ Medidas de mitigación y buenas prácticas

  • Reducir privilegios de forma explícita: evitar ejecutarse como root y eliminar capacidades innecesarias.
  • Aplicar perfiles de seguridad: usar seccomp, AppArmor o SELinux para limitar syscalls y accesos del proceso.
  • Aislar redes: desactivar acceso externo o restringir el tráfico por políticas de red mínimas.
  • Usar sistemas de archivos de solo lectura: cuando sea posible, evitar escritura en el sistema de archivos del contenedor o aplicación.
  • Reforzar límites de recursos: definir límites de memoria, CPU, procesos y E/S para reducir el riesgo de abuso o denegación de servicio.
  • Monitorizar comportamiento: disponer de registros, métricas, alertas y análisis de anomalías para detectar abusos del sandbox.
  • Mantener imágenes y dependencias actualizadas: los parches de kernel, bibliotecas y runtimes reducen la superficie de explotación.

🔗 Referencias y enlaces de interés