Sandbox de Red (Aislamiento de Ejecución)

Archivo: src/sandbox.rs (439 líneas)

¿Por qué existe?

Implementa un sandbox de red que controla el acceso a operaciones de red (TCP/UDP) desde programas Forja. Por defecto, el sandbox está en modo "air-gapped": ninguna conexión de red está permitida. Esto es fundamental para ejecutar código no confiable de manera segura.

Modos de operación

ModoConfiguraciónComportamiento
Air-gapped (default)hosts_permitidos = NoneNo se permite NINGUNA conexión de red
Hosts específicoshosts_permitidos = Some(["localhost", "127.0.0.1"])Solo conexiones a hosts explicitamente permitidos
Sin restricciónhosts_permitidos = Some(["*"])Todos los hosts están permitidos

API Pública

Función/MétodoDescripción
SandboxRed::new()Crea sandbox en modo air-gapped (sin red)
permitir_host(host)Agrega un host a la lista de permitidos
permitir_puerto(puerto)Agrega un puerto a la lista de permitidos
verificar(host, puerto)Verifica si una conexión está permitida
modo_airgap()Retorna true si el sandbox está en modo air-gapped

Control desde CLI

El sandbox se configura desde la línea de comandos al ejecutar un programa Forja:

🛡️ Flags de sandbox
# Modo air-gapped (por defecto, no hace falta flag)
forja run script.fa

# Permitir hosts específicos
forja run --allow-net localhost,127.0.0.1 script.fa

# Permitir todos los hosts
forja run --allow-net "*" script.fa

# Restringir puertos
forja run --allow-port 80,443 script.fa

# Combinación
forja run --allow-net localhost --allow-port 3000 script.fa
⚠️ Seguridad: El sandbox de red es la primera línea de defensa. Se complementa con el sistema de módulos (que previene path traversal) y el diseño general de la VM que aísla la memoria entre programas.