
Seguridad para la era moderna de la IA: defiéndete contra agentes de IA maliciosos y paquetes npm maliciosos.
Seguridad para la era moderna de la IA.
Ninguna capa de seguridad es perfecta. airgap sigue siendo experimental. ¡Contribuciones bienvenidas!
airgap lanza un programa objetivo (por ejemplo, un agente de codificación de IA) dentro de su propio espacio de nombres de montaje y reemplaza de forma transparente los secretos con versiones redactadas. Un programa que se ejecuta bajo airgap aún puede leer y modificar archivos protegidos, pero nunca ve los secretos reales. Hasta ahora airgap protege:
.env y .env.* (por ejemplo, .env.local, .env.production) — coinciden por nombre de archivo. Los valores se redactan a <redacted value> mientras que las claves permanecen visibles; las ediciones, adiciones y eliminaciones se guardan de nuevo en el archivo real.BEGIN/END se mantienen..npmrc — coinciden por nombre de archivo. Los valores de token de autenticación y contraseña (_authToken, _auth, _password, incluyendo la forma por registro //registry/:_authToken) se redactan a <redacted value>, mientras que los registros, ámbitos, email y comentarios permanecen visibles; las ediciones se guardan de nuevo en el archivo real.Se agregarán más tipos de secretos.
Estos se redactan en cualquier lugar bajo el directorio de trabajo o su directorio personal ($HOME) — así que tanto el .env de un proyecto como las claves ~/.ssh están cubiertos. La coincidencia es dinámica: los archivos creados después del lanzamiento también se capturan.
Compare el contenido de .env con y sin usar airgap:
$ cat .env
API_KEY=sk-live-9f8c2a1b4e7d
DB_PASSWORD=hunter2
$ airgap cat .env
API_KEY=<redacted value>
DB_PASSWORD=<redacted value>
Con un agente de IA:
$ airgap claude
show me ./test/fixtures/.env contents
Read 1 file
Here's the file:
DATABASE_URL="<redacted value>"
API_KEY="<redacted value>"
AWS_SECRET_ACCESS_KEY="<redacted value>"
DEBUG="<redacted value>"
...
Una capa adicional defiende contra paquetes maliciosos: airgap solicita su permiso cuando se accede a archivos inesperados — por ejemplo, por un script malicioso de instalación de npm.
Cuando la puerta está activa, airgap le pide que permita o rechace la primera lectura de cada archivo nuevo. Aprobar un archivo otorga solo ese archivo; las decisiones duran hasta el final de la ejecución. Cada gestor de paquetes viene con una lista de archivos preaprobados.
Por ejemplo, al instalar un paquete malicioso cuyo script postinstall intenta leer sus claves SSH y .env:
$ airgap npm install
...
airgap: npm wants to read the file /home/you/.ssh/id_rsa — allow? [y/N] n
airgap: npm wants to read the file /home/you/.env — allow? [y/N] n
Responda n para rechazar el acceso.
airgap depende de espacios de nombres de montaje y una superposición FUSE, que son características de Linux.cargo install airgap
airgap <program> [args...]
airgap ejecuta <program> con [args...], pasando argv, el entorno y el directorio de trabajo sin cambios. Cuando <program> sale, airgap sale con el mismo código.
Para ejecutar siempre su agente de IA bajo airgap, cree un alias en su configuración de shell (~/.bashrc, ~/.zshrc, ...):
alias claude="airgap claude"
alias opencode="airgap opencode"
Ahora claude (o opencode) se ejecuta de forma transparente dentro de airgap.
Ejecute su gestor de paquetes bajo airgap para protegerse contra scripts de instalación maliciosos. O cree un alias en su configuración de shell:
alias npm="airgap npm"
Si desea reportar un problema de seguridad o hacer una pregunta, envíe un correo electrónico a [email protected].