wsl-labs GitHub

🔐 Política de Seguridad#

Política de seguridad para wsl-labs.


🏠 Modelo de exposición#

El panel escucha únicamente en 127.0.0.1:9092 (loopback). No se enlaza a 0.0.0.0 ni se expone a la red por diseño: es una herramienta de control local que construye y levanta contenedores con wslc.

🪟 Windows (navegador / launcher)  →  127.0.0.1:9092  →  🐳 wslc.exe (contenedores)
No expongas el panel a la red (port forwarding, netsh portproxy, túneles). Los endpoints /api/wslc/* construyen imágenes y ejecutan contenedores con wslc — abrirlos a la red equivale a dar ejecución remota de comandos.

⚙️ Modelo de confianza: wslc en Windows#

El panel invoca wslc.exe directamente en Windows (wslc build/run/logs/…), localizándolo en C:\Program Files\WSL\wslc.exe. Windows ya autenticó al usuario, por eso no usa wsl -u root, sudo ni contraseñas.

Consecuencia honesta: quien pueda acceder al panel puede construir imágenes y levantar contenedores con wslc (que corre con los privilegios del usuario de Windows). Mitigaciones:

(build/up/down/logs de casos del catálogo), no comandos arbitrarios.

No abras :9092 a la red. Exponerlo equivale a dar a terceros la capacidad de construir y ejecutar contenedores en tu máquina.

🔑 Token opcional (WSL_LABS_TOKEN)#

Por defecto, en modo dev local, la API es abierta (el acceso ya está restringido a loopback). Puedes endurecerla exigiendo un token:

$env:WSL_LABS_TOKEN = "un-token-largo-y-aleatorio"
node dashboard-server/server.js

Con el token activo, cada llamada a /api debe incluir:

Authorization: Bearer un-token-largo-y-aleatorio

o la cookie wsl_labs_token=<token>.

Activa el token si compartes la máquina con otros usuarios o si corres varias sesiones. Genera un valor aleatorio largo; no reutilices contraseñas.

🛡️ Defensas incluidas#

DefensaDetalle
🏠 Solo loopbackEl servidor enlaza a 127.0.0.1, nunca a la red
🔑 Token opcionalWSL_LABS_TOKEN protege /api/*
🚦 Rate limitingLímite de solicitudes POST por IP
📏 Límite de bodyTamaño máximo por request
✅ Validación de idSolo id de casos existentes en el catálogo pueden ejecutarse
🔒 Acciones del catálogoSolo build/up/down/logs de casos definidos en containers.config.json
🐳 wslc en WindowsCorre con los privilegios del usuario de Windows; sin sudo ni root en WSL

🐳 Contenedores: buenas prácticas#

MARIADB_ROOT_PASSWORD=wsl-labs) son para uso local; no las reutilices en otros entornos.

(& "C:\Program Files\WSL\wslc.exe" list).

ni imágenes pesadas ocupando recursos.


🚨 Reporte de vulnerabilidades#

Si encuentras una vulnerabilidad, no abras un issue público.

Canales recomendados:

Security Advisories

vladimir.acuna.dev@gmail.com

Qué incluir#


📐 Recomendaciones#


📖 Ver también: COMPATIBILITY.md · RUNBOOK.md

Fuente: SECURITY.md