- Início
- Contêiner de desenvolvimento
- Segurança
Segurança
Contexto
Seção intitulada “Contexto”Em fevereiro de 2025, a LayerX Security Research divulgou uma vulnerabilidade crítica de execução remota de código sem interação do usuário (zero-click) no framework de Extensões Desktop (DXT) do Claude da Anthropic. As extensões são executadas sem sandbox, com privilégios totais do sistema, atuando como pontes de execução entre o modelo de linguagem e o sistema operacional local.
Muitas equipes de segurança corporativa agora exigem que ferramentas de codificação com IA sejam executadas apenas dentro de máquinas virtuais dedicadas, contêineres ou ambientes descartáveis — não diretamente em endpoints corporativos.
Este devcontainer atende a esse requisito.
Modelo de Isolamento
Seção intitulada “Modelo de Isolamento”+------------------------------------------------+| Máquina Host (endpoint corporativo) || || - Nenhum binário de ferramenta IA instalado || - Nenhuma extensão ou plugin de IA || - Apenas Docker é necessário || || +------------------------------------------+ || | Contêiner Docker (isolado) | || | | || | Ferramentas de IA rodam aqui: | || | - Claude Code CLI | || | - Codex | || | | || | Sem acesso a: | || | x Sistema de arquivos do host | || | x Keychain / armazenamento de credenciais| || | x Área de transferência do host | || | x Interfaces de rede do host | || | x Outras aplicações do host | || +------------------------------------------+ |+------------------------------------------------+Controles de Segurança
Seção intitulada “Controles de Segurança”Sem Montagem de Volumes do Host
Seção intitulada “Sem Montagem de Volumes do Host”Todos os dados residem em volumes nomeados do Docker — não em diretórios do host montados via bind. Um comprometimento dentro do contêiner não pode acessar arquivos na sua máquina host. Consulte Configuração — Persistência de Dados para detalhes sobre volumes.
Sem Armazenamentos de Credenciais Compartilhados
Seção intitulada “Sem Armazenamentos de Credenciais Compartilhados”O contêiner não tem acesso ao macOS Keychain, ao Gerenciador de Credenciais do Windows, perfis de navegador ou ao agente SSH do host. As chaves SSH são injetadas na inicialização via uma variável de ambiente codificada em base64 e existem apenas dentro do contêiner.
Sem Sincronização de Área de Transferência
Seção intitulada “Sem Sincronização de Área de Transferência”Contêineres Docker não compartilham o estado da área de transferência com o host. Dados não podem vazar por copiar/colar.
Isolamento de Rede
Seção intitulada “Isolamento de Rede”O contêiner se comunica com o mundo externo em um dos dois modos de autenticação suportados:
- Modo proxy LiteLLM — HTTPS de saída para seu proxy LiteLLM através do NAT do Docker.
- Modo OAuth — HTTPS de saída diretamente para a Anthropic através do NAT do Docker.
O contêiner não tem acesso a túneis VPN, interfaces de rede corporativa ou outros serviços no host.
Efêmero por Design
Seção intitulada “Efêmero por Design”Todo o ambiente pode ser destruído e recriado em segundos. Trate o contêiner como descartável.
docker compose down -vdocker compose pull && docker compose up -dpodman-compose down -vpodman-compose pull && podman-compose up -dFerramentas Apenas CLI
Seção intitulada “Ferramentas Apenas CLI”Este ambiente executa ferramentas de IA como interfaces de linha de comando apenas. Sem aplicações desktop, sem extensões de navegador, sem frameworks DXT. A vulnerabilidade que motivou este modelo de isolamento não se aplica ao uso via CLI dentro de um contêiner.
Hardening do Contêiner
Seção intitulada “Hardening do Contêiner”O docker-compose.yml aplica diversas medidas de defesa em profundidade:
- Remoção de capabilities — Todas as capabilities do Linux são removidas (
cap_drop: ALL), e então apenas o conjunto mínimo é readicionado:CHOWN,DAC_OVERRIDE,FOWNER(para correções de permissão de volume no entrypoint),SETUID/SETGID(para sudo),NET_RAW(para ping/tcpdump) eNET_ADMIN(para ferramentas de captura de pacotes como Wireshark e bettercap). - Limites de recursos — CPU (4 núcleos), memória (8 GB) e contagem de PIDs (4096) são limitados via
mem_limit,cpusepids_limitpara prevenir ataques de exaustão de recursos. - tmpfs para
/tmp— O diretório/tmpé montado como um tmpfs de 256 MB, mantendo arquivos temporários em memória e impedindo que persistam na camada gravável do contêiner. - Validação TLS ativada por padrão —
NODE_TLS_REJECT_UNAUTHORIZEDnão é definido, então o Node.js valida certificados TLS por padrão. Usuários que precisam aceitar certificados autoassinados (por exemplo, para um proxy interno) podem optar por adicionarNODE_TLS_REJECT_UNAUTHORIZED=0ao seu arquivo.env. - Umask para chave SSH — As chaves privadas SSH são escritas com
umask 077, de modo que o arquivo nunca fica legível para todos — mesmo brevemente — entre a criação e a chamadachmod.
Ferramentas de Segurança e Teste de Penetração
Seção intitulada “Ferramentas de Segurança e Teste de Penetração”O contêiner inclui aproximadamente 80 ferramentas de segurança e teste de penetração pré-instaladas para cenários de teste autorizados. As ferramentas são organizadas por categoria:
| Categoria | Ferramentas (exemplos) |
|---|---|
| Análise de rede | tshark, wireshark, masscan, hping3, bettercap (amd64), netdiscover |
| Scanners web | nikto, sqlmap, dirb, whatweb, sslscan, OWASP ZAP, dalfox, feroxbuster |
| Senhas e autenticação | hydra, john, hashcat, medusa, ncrack |
| Engenharia reversa | radare2, Ghidra, gdb, binwalk, strace, ltrace |
| Reconhecimento | subfinder, amass, httpx, nuclei, gau, waybackurls, recon-ng, spiderfoot |
| Fuzzing e enumeração | ffuf, gobuster, SecLists |
| Cadeia de suprimentos e segredos | trufflehog, grype, syft, gitleaks, trivy |
| Frameworks de exploração | Metasploit (amd64), searchsploit (ExploitDB) |
Algumas ferramentas (bettercap, Metasploit) estão disponíveis apenas em amd64 devido a restrições de empacotamento upstream. Ferramentas de captura de pacotes (tshark, bettercap) requerem a capability NET_ADMIN, que está incluída no docker-compose.yml padrão.
Para a lista completa, execute claude-self-test dentro do contêiner (a seção 7 verifica todas as ferramentas de segurança).
Lista de Verificação de Conformidade
Seção intitulada “Lista de Verificação de Conformidade”| Requisito | Status |
|---|---|
| Ferramentas de IA não instaladas no endpoint host | Sim |
| Executa em VM ou contêiner isolado | Sim |
| Sem acesso a compartilhamentos de arquivos do host | Sim |
| Sem sincronização de área de transferência | Sim |
| Sem armazenamentos de credenciais compartilhados | Sim |
| Sem split tunneling VPN para redes de produção | Sim |
| Ambiente é descartável | Sim |
| Sem extensões ou plugins desktop | Sim |
| Capabilities do Linux removidas (privilégio mínimo) | Sim |
| Limites de recursos aplicados (CPU/memória/PIDs) | Sim |
| Validação de certificado TLS habilitada por padrão | Sim |
| Serviços internos vinculados apenas ao localhost | Sim |
Melhores Práticas
Seção intitulada “Melhores Práticas”- Não instale ferramentas de codificação com IA na sua máquina host. Use este contêiner em vez disso.
- Não adicione bind mounts ao
docker-compose.yml. A configuração com volumes nomeados é intencional. - Faça a rotação das chaves SSH usadas dentro do contêiner periodicamente.
- Revise o
.envantes de compartilhar. Ele contém chaves de API e pode conter chaves privadas SSH. - Atualize periodicamente para obter correções de segurança:
docker compose pull && docker compose up -dpodman-compose pull && podman-compose up -d