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
| Modo | Configuración | Comportamiento |
|---|---|---|
| Air-gapped (default) | hosts_permitidos = None | No se permite NINGUNA conexión de red |
| Hosts específicos | hosts_permitidos = Some(["localhost", "127.0.0.1"]) | Solo conexiones a hosts explicitamente permitidos |
| Sin restricción | hosts_permitidos = Some(["*"]) | Todos los hosts están permitidos |
API Pública
| Función/Método | Descripció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.