- Inicio
- Contenedor de desarrollo
- Seguridad
Seguridad
Antecedentes
Sección titulada «Antecedentes»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.
Modelo de Aislamiento
Sección titulada «Modelo de Aislamiento»+------------------------------------------------+| 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 | || +------------------------------------------+ |+------------------------------------------------+Controles de Seguridad
Sección titulada «Controles de Seguridad»Sin Montajes de Volúmenes del Anfitrión
Sección titulada «Sin Montajes de Volúmenes 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.
Sin Almacenes de Credenciales Compartidos
Sección titulada «Sin Almacenes de Credenciales Compartidos»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.
Sin Sincronización de Portapapeles
Sección titulada «Sin Sincronización de Portapapeles»Los contenedores Docker no comparten el estado del portapapeles con el anfitrión. Los datos no pueden filtrarse a través de copiar/pegar.
Aislamiento de Red
Sección titulada «Aislamiento de Red»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.
Efímero por Diseño
Sección titulada «Efímero por Diseño»El entorno completo puede ser destruido y recreado en segundos. Trate el contenedor como desechable.
docker compose down -vdocker compose pull && docker compose up -dpodman-compose down -vpodman-compose pull && podman-compose up -dHerramientas Solo de Línea de Comandos
Sección titulada «Herramientas Solo de Línea de Comandos»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.
Endurecimiento del Contenedor
Sección titulada «Endurecimiento del 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) yNET_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,cpusypids_limitpara prevenir ataques de agotamiento de recursos. - tmpfs para
/tmp— El directorio/tmpse 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 defecto —
NODE_TLS_REJECT_UNAUTHORIZEDno 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 agregarNODE_TLS_REJECT_UNAUTHORIZED=0a 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 llamadachmod.
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ía | Herramientas (ejemplos) |
|---|---|
| Análisis de red | tshark, wireshark, masscan, hping3, bettercap (amd64), netdiscover |
| Escáneres web | nikto, sqlmap, dirb, whatweb, sslscan, OWASP ZAP, dalfox, feroxbuster |
| Contraseñas y autenticación | hydra, john, hashcat, medusa, ncrack |
| Ingeniería inversa | radare2, Ghidra, gdb, binwalk, strace, ltrace |
| Reconocimiento | subfinder, amass, httpx, nuclei, gau, waybackurls, recon-ng, spiderfoot |
| Fuzzing y enumeración | ffuf, gobuster, SecLists |
| Cadena de suministro y secretos | trufflehog, grype, syft, gitleaks, trivy |
| Frameworks de explotación | Metasploit (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).
Lista de Verificación de Cumplimiento
Sección titulada «Lista de Verificación de Cumplimiento»| Requisito | Estado |
|---|---|
| Herramientas IA no instaladas en el endpoint anfitrión | Sí |
| Se ejecuta en VM o contenedor aislado | Sí |
| Sin acceso a recursos compartidos del anfitrión | Sí |
| Sin sincronización de portapapeles | Sí |
| Sin almacenes de credenciales compartidos | Sí |
| Sin túneles VPN divididos hacia redes de producción | Sí |
| El entorno es desechable | Sí |
| Sin extensiones de escritorio o plugins | Sí |
| Capacidades de Linux eliminadas (mínimo privilegio) | Sí |
| Límites de recursos aplicados (CPU/memoria/PIDs) | Sí |
| Validación de certificados TLS habilitada por defecto | Sí |
| Servicios internos vinculados solo a localhost | Sí |
Mejores Prácticas
Sección titulada «Mejores Prácticas»- No instale herramientas de codificación con IA en su máquina anfitriona. Use este contenedor en su lugar.
- No agregue montajes por enlace al
docker-compose.yml. La configuración de volúmenes nombrados es intencional. - Rote las claves SSH utilizadas dentro del contenedor periódicamente.
- Revise
.envantes de compartir. Contiene claves de API y puede contener claves privadas SSH. - Actualice periódicamente para incorporar parches de seguridad:
docker compose pull && docker compose up -dpodman-compose pull && podman-compose up -d