Gap Hunter Labs
ghl-jail
Un sandbox de Windows de una sola línea para las herramientas de línea de comandos en las que no confías del todo. Ejecuta un comando con acceso a una única carpeta de proyecto — y a nada más tuyo. Sin permisos de administrador, sin controlador, sin instalación.
El problema
En abril de 2026 una versión maliciosa de la CLI de Bitwarden estuvo viva en npm unos noventa minutos. En ese lapso leyó claves SSH, archivos .env y credenciales de AWS, Azure y GCP de cada máquina que la instaló. En octubre, el repositorio de la CLI oficial de OVHcloud fue comprometido de la misma forma — una versión mala, detectada y bloqueada en 94 minutos, pero solo después de que un cliente lo notara.
Ninguno era un virus que pudieras haber detectado. El antivirus pregunta si un archivo es conocido como malo y deja pasar cualquier cosa nueva. Y cada CLI que ejecutas — un gestor de paquetes, un binario de release, un script que te mandó un compañero — corre como tú, con acceso de lectura total a ~/.ssh, tus archivos de credenciales de la nube, el perfil de tu navegador y cualquier token que tengas en tu entorno.
Por qué el aislamiento habitual pesa demasiado
Levantar una máquina virtual o un contenedor solo para probar una herramienta de usar y tirar cuesta minutos y gigabytes — y en Windows las opciones de aislamiento sólidas requieren Pro, Hyper-V o un administrador que quizá no tengas en una máquina de trabajo restringida. Así que, en la práctica, la mayoría no aísla nada. La herramienta simplemente se ejecuta.
Una cerca en una línea
ghl-jail ejecuta un solo comando para que solo pueda tocar la carpeta de proyecto que le indiques:
Dentro de esa carpeta la herramienta lee y escribe con libertad. En cuanto intenta salir — hacia ~/.ssh, un archivo de credenciales de la nube, un token de tu entorno — choca con un muro:
Y por defecto no tiene red, así que incluso una herramienta que no encontró nada que leer no tiene adónde enviarlo.
Qué bloquea y qué permite
ghl-jail tiene dos modos. Container es el más estricto — tapiado del resto de la máquina salvo la carpeta de proyecto, sin red. Token es para herramientas que necesitan red o que no arrancan en el modo más estricto (git); sigue bloqueando tu perfil. Un modo auto elige container para todo y cambia a token en silencio solo para las pocas herramientas que lo necesitan, avisándote cuando lo hace.
| La herramienta intenta… | container | token |
|---|---|---|
| leer / escribir tu carpeta de proyecto | permitido | permitido |
leer ~/.ssh, ~/.aws, .env, datos del navegador, el resto de tu perfil | bloqueado | bloqueado |
| escribir en cualquier sitio fuera del proyecto | bloqueado | bloqueado |
| llegar a la red | bloqueado (salvo que se pida) | permitido |
| leer un token de API dejado en una variable de entorno | bloqueado | bloqueado |
| ejecutar python, java, node | sí | sí |
| ejecutar git | no (peculiaridad de Windows) | sí |
Tres formas de usarlo
Probar una CLI no confiable o recién descargada
Ve una carpeta vacía y nada de red — una versión con puerta trasera como la de Bitwarden no encuentra credenciales en el disco ni salida alguna.
Mantener a un agente de IA dentro de un repo
Un agente de IA, o cualquier script autónomo, que edita código y ejecuta comandos lee y escribe solo ese repo, sin conexión salvo que lo permitas. El radio de daño de una corrida confundida o con inyección de prompt pasa a ser un repo al que puedes hacer git reset, no toda tu cuenta.
Ejecutar npm install / pip install sin ceder tus credenciales
Los scripts de instalación llegan al registro y escriben en el proyecto, pero un hook post-install malicioso — exactamente el patrón de Bitwarden — nunca ve tus claves SSH ni tus tokens reales.
Lo que no es
Es reducción de daño, no una bóveda. Sube mucho el costo de un error; no es una garantía contra un atacante que ataca activamente este sandbox en concreto, y no reemplaza la aplicación a nivel de kernel ni una máquina virtual real. Es la cerca que pones alrededor de una herramienta antes de confiar en ella — no una razón para ejecutar cosas que ya sabes que son maliciosas.
Cómo obtenerlo
Necesitas Python 3.8+ y Windows 10 u 11 (Home incluido). Sin permisos de administrador, sin instalación, sin servicio en segundo plano. Clona el repositorio y ejecútalo:
Código abierto y gratis. Solo Windows. El README tiene el recorrido completo, los tres modos y los límites conocidos.