Ir al contenido

Seguridad

En febrero de 2025, LayerX Security Research reveló una vulnerabilidad crítica de ejecución remota de código sin interacción del usuario en el framework de Extensiones de Escritorio (DXT) de Claude de Anthropic. Las extensiones se ejecutan sin aislamiento con privilegios completos del sistema, actuando como puentes de ejecución entre el modelo de lenguaje y el sistema operativo local.

Muchos equipos de seguridad corporativa ahora requieren que las herramientas de codificación con IA se ejecuten únicamente dentro de máquinas virtuales dedicadas, contenedores o entornos desechables — no directamente en los endpoints corporativos.

Este devcontainer satisface ese requisito.

+------------------------------------------------+
| Máquina Anfitriona (endpoint corporativo) |
| |
| - Sin binarios de herramientas IA instalados |
| - Sin extensiones o plugins de herramientas IA|
| - Solo se requiere Docker |
| |
| +------------------------------------------+ |
| | Contenedor Docker (aislado) | |
| | | |
| | Las herramientas IA se ejecutan aquí: | |
| | - Claude Code CLI | |
| | - Codex | |
| | | |
| | Sin acceso a: | |
| | x Sistema de archivos del anfitrión | |
| | x Llavero / almacén de credenciales | |
| | x Portapapeles del anfitrión | |
| | x Interfaces de red del anfitrión | |
| | x Otras aplicaciones del anfitrión | |
| +------------------------------------------+ |
+------------------------------------------------+

Todos los datos residen en volúmenes nombrados de Docker — no en directorios del anfitrión montados por enlace. Un compromiso dentro del contenedor no puede acceder a archivos en su máquina anfitriona. Consulte Configuración — Persistencia de Datos para detalles sobre los volúmenes.

El contenedor no tiene acceso al Llavero de macOS, al Administrador de Credenciales de Windows, perfiles de navegador o al agente SSH del anfitrión. Las claves SSH se inyectan al inicio mediante una variable de entorno codificada en base64 y existen únicamente dentro del contenedor.

Los contenedores Docker no comparten el estado del portapapeles con el anfitrión. Los datos no pueden filtrarse a través de copiar/pegar.

El contenedor se comunica con el mundo exterior en uno de dos modos de autenticación soportados:

  • Modo proxy LiteLLM — HTTPS saliente hacia su proxy LiteLLM a través del NAT de Docker.
  • Modo OAuth — HTTPS saliente directamente hacia Anthropic a través del NAT de Docker.

El contenedor no tiene acceso a túneles VPN, interfaces de red corporativas u otros servicios en el anfitrión.

El entorno completo puede ser destruido y recreado en segundos. Trate el contenedor como desechable.

Ventana de terminal
docker compose down -v
docker compose pull && docker compose up -d

Este entorno ejecuta herramientas de IA como interfaces de línea de comandos únicamente. Sin aplicaciones de escritorio, sin extensiones de navegador, sin frameworks DXT. La vulnerabilidad que motivó este modelo de aislamiento no aplica al uso de CLI dentro de un contenedor.

El docker-compose.yml aplica varias medidas de defensa en profundidad:

  • Eliminación de capacidades — Todas las capacidades de Linux se eliminan (cap_drop: ALL), y luego solo se re-agregan el conjunto mínimo: CHOWN, DAC_OVERRIDE, FOWNER (para correcciones de permisos de volúmenes en el entrypoint), SETUID/SETGID (para sudo), NET_RAW (para ping/tcpdump) y NET_ADMIN (para herramientas de captura de paquetes como Wireshark y bettercap).
  • Límites de recursos — CPU (4 núcleos), memoria (8 GB) y conteo de PIDs (4096) están limitados mediante mem_limit, cpus y pids_limit para prevenir ataques de agotamiento de recursos.
  • tmpfs para /tmp — El directorio /tmp se monta como un tmpfs de 256 MB, manteniendo los archivos temporales en memoria y evitando que persistan en la capa escribible del contenedor.
  • Validación TLS activada por defectoNODE_TLS_REJECT_UNAUTHORIZED no está configurada, por lo que Node.js valida los certificados TLS por defecto. Los usuarios que necesiten aceptar certificados autofirmados (por ejemplo, para un proxy interno) pueden optar por agregar NODE_TLS_REJECT_UNAUTHORIZED=0 a su archivo .env.
  • Umask de claves SSH — Las claves privadas SSH se escriben con umask 077, de modo que el archivo nunca es legible por todos — ni siquiera brevemente — entre la creación y la llamada chmod.

Herramientas de Seguridad y Pruebas de Penetración

Sección titulada «Herramientas de Seguridad y Pruebas de Penetración»

El contenedor incluye aproximadamente 80 herramientas de seguridad y pruebas de penetración preinstaladas para escenarios de pruebas autorizadas. Las herramientas están organizadas por categoría:

CategoríaHerramientas (ejemplos)
Análisis de redtshark, wireshark, masscan, hping3, bettercap (amd64), netdiscover
Escáneres webnikto, sqlmap, dirb, whatweb, sslscan, OWASP ZAP, dalfox, feroxbuster
Contraseñas y autenticaciónhydra, john, hashcat, medusa, ncrack
Ingeniería inversaradare2, Ghidra, gdb, binwalk, strace, ltrace
Reconocimientosubfinder, amass, httpx, nuclei, gau, waybackurls, recon-ng, spiderfoot
Fuzzing y enumeraciónffuf, gobuster, SecLists
Cadena de suministro y secretostrufflehog, grype, syft, gitleaks, trivy
Frameworks de explotaciónMetasploit (amd64), searchsploit (ExploitDB)

Algunas herramientas (bettercap, Metasploit) solo están disponibles en amd64 debido a restricciones de empaquetado del proveedor. Las herramientas de captura de paquetes (tshark, bettercap) requieren la capacidad NET_ADMIN, que está incluida en el docker-compose.yml predeterminado.

Para la lista completa, ejecute claude-self-test dentro del contenedor (la sección 7 verifica todas las herramientas de seguridad).

RequisitoEstado
Herramientas IA no instaladas en el endpoint anfitrión
Se ejecuta en VM o contenedor aislado
Sin acceso a recursos compartidos del anfitrión
Sin sincronización de portapapeles
Sin almacenes de credenciales compartidos
Sin túneles VPN divididos hacia redes de producción
El entorno es desechable
Sin extensiones de escritorio o plugins
Capacidades de Linux eliminadas (mínimo privilegio)
Límites de recursos aplicados (CPU/memoria/PIDs)
Validación de certificados TLS habilitada por defecto
Servicios internos vinculados solo a localhost
  1. No instale herramientas de codificación con IA en su máquina anfitriona. Use este contenedor en su lugar.
  2. No agregue montajes por enlace al docker-compose.yml. La configuración de volúmenes nombrados es intencional.
  3. Rote las claves SSH utilizadas dentro del contenedor periódicamente.
  4. Revise .env antes de compartir. Contiene claves de API y puede contener claves privadas SSH.
  5. Actualice periódicamente para incorporar parches de seguridad:
Ventana de terminal
docker compose pull && docker compose up -d