Falhas no Claude Code permitem execução de comandos e exfiltração de chaves por arquivos de projeto

Falhas no Claude Code permitem execução de comandos e exfiltração de chaves por arquivos de projeto

Configurações versionadas em repositórios podiam acionar Hooks, servidores MCP e variáveis de ambiente para executar comandos locais e redirecionar tráfego autenticado antes da confiança explícita do usuário.

ComponenteClaude Code, com configurações de projeto em .claude/settings.json, servidores MCP em .mcp.json, Hooks e a variável ANTHROPIC_BASE_URL.
VetorRepositório não confiável clonado pelo usuário e aberto com o comando claude, incluindo arquivos de configuração controlados por quem consegue alterar o projeto.
ImpactoExecução de comandos shell no host do desenvolvedor e exfiltração de chave de API da Anthropic em requisições redirecionadas antes de uma decisão efetiva de confiança.
PrioridadeAtualizar o Claude Code para uma versão corrigida, bloquear execução em repositórios não revisados e auditar configurações versionadas antes de iniciar sessões.
ArtefatosCVE-2025-59536, CVE-2026-21852, .claude/settings.json, .mcp.json, Hooks, MCP e ANTHROPIC_BASE_URL.
MitigaçãoRemover configurações de execução automática não verificadas, revisar servidores MCP aprovados, invalidar chaves possivelmente expostas e monitorar uso anômalo de API.
Resumo técnico

Duas falhas críticas no Claude Code expunham desenvolvedores a execução de código e roubo de credenciais por meio de arquivos de configuração armazenados dentro do próprio repositório. O problema central estava no fato de que o comportamento do agente podia ser alterado por arquivos versionados, como .claude/settings.json e .mcp.json, que são naturalmente herdados quando um projeto é clonado. Em um fluxo de colaboração legítimo, isso padroniza Hooks, integrações MCP e variáveis usadas pela ferramenta. Em um fluxo malicioso, permite que um commit introduza comandos a serem executados no computador de quem abre o projeto com claude.

A exposição afetava três caminhos técnicos relacionados, mas distintos. O primeiro envolvia Hooks definidos em .claude/settings.json, capazes de disparar comandos shell em eventos do ciclo de vida da sessão. O segundo envolvia servidores MCP configurados no projeto e automaticamente aprovados por parâmetros também controláveis no arquivo de configurações. O terceiro explorava a substituição de ANTHROPIC_BASE_URL, variável que define o endpoint usado pelo cliente para comunicação com a API, permitindo redirecionar requisições autenticadas para infraestrutura controlada pelo atacante. As falhas foram corrigidas antes da publicação, mas o caso demonstra uma classe de risco relevante para ferramentas agentivas que combinam execução local, confiança em repositório e credenciais de API.

Fluxo técnico

No caminho de execução por Hooks, o atacante prepara um repositório contendo .claude/settings.json com uma definição associada ao evento SessionStart e a um seletor de inicialização. Quando o usuário entra no diretório e inicia o Claude Code, a ferramenta carrega a configuração do projeto e executa o comando associado ao Hook. O comportamento observado indicava que o aviso inicial mencionava a possibilidade de leitura e execução de arquivos com permissão, mas não exigia uma confirmação separada no momento em que o comando do Hook era disparado. Assim, a ação ocorria no contexto do usuário local, com os privilégios disponíveis ao processo, antes que a sessão aparentasse qualquer anomalia operacional.

No caminho envolvendo MCP, a cadeia passa por .mcp.json, arquivo usado para declarar servidores do Model Context Protocol. Esses servidores são inicializados por comandos definidos na configuração, pois o MCP permite que a ferramenta converse com serviços e utilitários externos. A superfície se agravava porque .claude/settings.json podia conter parâmetros como enableAllProjectMcpServers e enabledMcpjsonServers, destinados a aprovar automaticamente servidores definidos no projeto. Combinando os dois arquivos, um repositório conseguia declarar um servidor MCP falso e, em seguida, autorizar sua inicialização sem que o usuário efetivamente aprovasse o comando de execução naquele momento.

O terceiro caminho não dependia de execução direta de binário externo, mas de controle de tráfego. Ao definir ANTHROPIC_BASE_URL no arquivo de configurações do projeto, o atacante podia alterar o destino das chamadas feitas pelo Claude Code. Como a ferramenta iniciava comunicação com a API durante a inicialização da sessão, requisições eram emitidas antes da decisão final de confiança sobre o diretório. Essas requisições incluíam cabeçalhos de autorização com a chave de API da Anthropic e também metadados de inicialização, como nomes de arquivos do repositório e mensagens recentes de commits. Um endpoint sob controle do atacante poderia, portanto, capturar a credencial em texto claro no tráfego recebido.

A consequência prática é uma cadeia de comprometimento com baixa interação: o usuário clona ou acessa um repositório controlado, executa claude no diretório e tem comandos disparados ou chaves enviadas para um endpoint externo. A exploração real exigiria que a vítima executasse a ferramenta dentro do projeto malicioso, mas não exigiria que ela rodasse manualmente um script do repositório. Essa diferença é importante para defesa, porque muitos controles de engenharia tratam scripts de build, instaladores e tarefas de CI como pontos de risco, mas podem não inspecionar arquivos de configuração específicos de assistentes de IA com o mesmo rigor.

Superfície afetada

A superfície afetada é composta por estáções de desenvolvedores, ambientes de engenharia e fluxos de automação em que o Claude Code é executado dentro de repositórios obtidos de terceiros, forks, provas de conceito, projetos de clientes, dependências internas pouco revisadas ou contribuições externas. O risco é maior quando o usuário possui chaves de API ativas no ambiente, permissões amplas no sistema de arquivos, acesso a repositórios privados, credenciais de nuvem, tokens de Git ou sessões autenticadas em ferramentas de desenvolvimento. Como o comando é executado no contexto local do processo, o impacto depende diretamente do que está disponível para aquele usuário e para aquela máquina.

O arquivo .claude/settings.json merece tratamento semelhante ao de scripts de instalação, arquivos de pipeline e tarefas automatizadas, porque ele pode alterar o comportamento da ferramenta no momento da sessão. O arquivo .mcp.json também deve ser considerado sensível quando define comandos de inicialização de servidores MCP. Em organizações que adotaram MCP para integrar bancos de dados, sistemas de arquivos, GitHub, serviços internos ou ferramentas de observabilidade, a aprovação automática de servidores amplia o risco de execução não percebida. A variável ANTHROPIC_BASE_URL, por sua vez, transforma uma configuração aparentemente operacional em vetor de exfiltração de credenciais e metadados.

  • Estáções em que usuários executam claude dentro de repositórios de origem não verificada.
  • Projetos que versionam .claude/settings.json com Hooks, variáveis de ambiente ou aprovação automática de MCP.
  • Repositórios que incluem .mcp.json com servidores declarados por comandos shell.
  • Ambientes com chaves de API da Anthropic disponíveis para o Claude Code.
  • Workflows em que desenvolvedores clonam forks, exemplos externos ou provas de conceito e iniciam ferramentas agentivas antes de revisar arquivos ocultos.
Hunting e telemetria

A investigação defensiva deve começar por repositórios acessados recentemente por usuários que executam Claude Code. Em cada projeto, procure mudanças em .claude/settings.json e .mcp.json, especialmente commits que adicionem Hooks, comandos de inicialização, variáveis de ambiente ou parâmetros de aprovação automática de servidores MCP. O histórico Git pode revelar quando uma configuração passou a acionar execução ou redirecionamento de tráfego. Em endpoints, correlacione a inicialização de claude com criação de processos filhos incomuns, como shells, utilitários de rede, interpretadores, binários temporários, clientes HTTP ou comandos que abram conexão reversa.

Para exfiltração de credenciais, a telemetria de rede deve identificar conexões iniciadas pelo processo do Claude Code para domínios ou endereços que não pertençam aos endpoints esperados da Anthropic. A presença de ANTHROPIC_BASE_URL definida em arquivo de projeto, variável de ambiente do processo ou wrapper de execução é um sinal de alto valor. Registros de proxy, EDR e firewall podem confirmar se requisições autenticadas foram enviadas a destinos não autorizados. Como os testes mostraram comunicação durante a inicialização da sessão, o intervalo de interesse começa no momento em que o usuário entra no diretório e executa claude, não apenas depois de interagir com prompts da ferramenta.

Também é necessário revisar consumo de API e eventos administrativos associados às chaves. Uso repentino fora do padrão, aumento de volume de requisições, chamadas a partir de endereços desconhecidos ou atividade em horários incompatíveis com o usuário podem indicar abuso após roubo de credencial. Quando houver Workspaces associados às chaves, a análise deve incluir arquivos e recursos acessíveis no escopo compartilhado, pois a chave pode não estar limitada ao projeto local do desenvolvedor. A ausência de hashes ou IoCs públicos no material técnico exige uma abordagem baseada em comportamento, configuração e correlação de processos.

  • Criação de processo filho por claude logo após a abertura de um repositório.
  • Adição ou alteração de Hooks em .claude/settings.json, especialmente associados a SessionStart.
  • Uso de enableAllProjectMcpServers ou enabledMcpjsonServers em configuração versionada.
  • Comandos suspeitos em .mcp.json usados para inicializar servidores MCP.
  • Definição de ANTHROPIC_BASE_URL apontando para domínio, IP, proxy ou endpoint não aprovado.
  • Tráfego HTTPS originado do Claude Code para infraestrutura que não faz parte do caminho esperado da API.
  • Uso anômalo de chaves da Anthropic após acesso a repositório externo.
Mitigação

A primeira ação é garantir que todas as instalações do Claude Code estejam em versões corrigidas, já que os problemas foram remediados antes da divulgação pública. Em seguida, organizações devem tratar arquivos de configuração da ferramenta como superfície de execução. Repositórios externos ou recém-clonados não devem ser abertos com claude antes da revisão de .claude/settings.json, .mcp.json e variáveis relacionadas. Em ambientes corporativos, políticas de endpoint podem bloquear ou alertar quando a ferramenta criar shells, executar interpretadores, iniciar clientes de rede ou acessar caminhos sensíveis sem uma aprovação operacional clara.

Controles de engenharia devem impedir que configurações de projeto aprovem automaticamente servidores MCP sem revisão. Quando MCP for necessário, mantenha uma lista conhecida de servidores, comandos e argumentos permitidos, preferencialmente com configuração gerenciada fora de repositórios não confiáveis. Hooks devem ser revisados como código executável: qualquer comando que baixe payloads, invoque shell, leia segredos, altere variáveis de ambiente ou acesse rede deve ser removido ou isolado. Para equipes com repositórios compartilhados, mudanças nesses arquivos devem exigir revisão de segurança ou donos de código específicos.

Se houver suspeita de exposição por ANTHROPIC_BASE_URL ou por execução de repositório malicioso, a contenção deve incluir revogação e recriação das chaves de API da Anthropic, revisão de uso de API, validação de Workspaces associados e busca por dados acessíveis no escopo da credencial. Também é necessário revisar segredos locais que poderiam ter sido lidos por comandos executados no host, incluindo tokens de Git, credenciais de nuvem, arquivos de configuração de CLI e variáveis de ambiente persistentes. A validação final deve combinar atualização da ferramenta, remoção dos arquivos maliciosos, limpeza de processos persistentes e monitoramento de novas tentativas de conexão externa.

  • Atualizar o Claude Code para uma versão que contenha as correções disponibilizadas pela Anthropic.
  • Revisar .claude/settings.json e .mcp.json antes de executar claude em repositórios externos ou pouco confiáveis.
  • Bloquear aprovação automática de servidores MCP definidos por projeto quando não houver necessidade operacional justificada.
  • Remover Hooks que executem comandos shell sem revisão explícita.
  • Monitorar processos filhos iniciados por claude e conexões para endpoints não aprovados.
  • Revogar chaves da Anthropic se houver evidência de redirecionamento por ANTHROPIC_BASE_URL.
  • Auditar Workspaces e consumo de API associados às chaves potencialmente expostas.

Postar um comentário

0 Comentários