Cibersegurança

Claude Code deixou senhas expostas em 1.122 arquivos públicos no GitHub

Susan Hill
Adicione-nos no Google

O Claude Code, da Anthropic, pede autorização antes de executar a maioria dos comandos de shell. Uma das opções é “Sim, e não perguntar novamente”. Se você escolher essa opção para um comando que contenha uma senha, como os dados de acesso a um banco de dados, o Claude Code pode gravar o comando inteiro — senha incluída — em um arquivo de configurações de texto simples dentro do projeto. Pesquisadores de segurança encontraram milhares dessas senhas e chaves em repositórios públicos de código no GitHub, onde qualquer pessoa pode vê-las.

Se você usa o Claude Code, procure o arquivo chamado settings.local.json. Ele fica em uma pasta oculta .claude, na raiz do repositório, e acompanha o projeto para onde quer que ele vá, a menos que você impeça isso. O comportamento é o mesmo em todos os países onde a ferramenta está disponível. Mudar seus hábitos leva um minuto; limpar os rastros de uma senha vazada demora bem mais, porque apagar o arquivo não o remove do histórico do git nem das cópias feitas por outras pessoas.

A empresa de segurança de software Apiiro pesquisou o GitHub público e encontrou 104.185 cópias do arquivo em 103.617 repositórios, segundo sua pesquisa, publicada pelo The Hacker News. Cerca de 1,1% — ou 1.122 cópias — continham pelo menos um segredo, somando 1.379 credenciais diferentes. Mais de um terço permitia acesso direto a um banco de dados, incluindo 379 senhas de banco de dados. A lista também inclui 43 credenciais SSH de servidores públicos, 42 tokens do GitHub, GitLab e npm, além de 23 chaves da Amazon Web Services.

Os responsáveis pelos repositórios não são apenas entusiastas. A Apiiro rastreou os arquivos até 63 organizações, em sua maioria empresas de software de diferentes portes. Entre os casos mais graves estão uma chave de nuvem com privilégios de administrador pertencente a um fornecedor de bancos de dados e a senha do proprietário de um banco de dados de prontuários médicos. Versões antigas do arquivo no histórico do git guardam outros 734 segredos em 509 repositórios, e 211 cópias de 74 repositórios contêm os mesmos segredos dos originais. Somando o arquivo de configurações compartilhado que as equipes incluem no repositório de propósito e os registros salvos de conversas com agentes, o total chega a 2.539 segredos em 1.994 repositórios.

O Claude Code tenta, sim, impedir que o arquivo entre no controle de versão. A documentação de configurações da Anthropic diz que, na primeira vez que a ferramenta grava o arquivo, ela adiciona uma regra às exclusões globais do git do usuário, fazendo com que o git o ignore naquele computador. Essa regra não acompanha o projeto até o laptop de um colega, um servidor de compilação ou uma máquina nova, e não resolve o problema de um arquivo que já tenha sido incluído no repositório. Em 539 dos 1.105 repositórios rastreados pelos pesquisadores, um commit que listava Claude como coautor alterou o arquivo, o que sugere que o próprio agente costuma incluí-lo no commit. Entre os 16 agentes de programação cuja documentação foi comparada pela Apiiro, o Claude Code é o único que, segundo a empresa, salva por padrão o comando completo aprovado em um arquivo do projeto.

As ferramentas de segurança mais comuns deixam passar muita coisa. A Apiiro usou dois populares scanners de código aberto para detectar segredos, gitleaks e TruffleHog, em todas as cópias: o gitleaks sinalizou 564 dos 1.122 arquivos, o TruffleHog sinalizou 643, e 215 passaram despercebidos pelos dois. A maioria dos casos não detectados envolvia senhas digitadas depois de PGPASSWORD=, sshpass -p ou mysql -p, que parecem palavras comuns para ferramentas à procura de formatos conhecidos de chaves.

Os resultados vêm acompanhados de ressalvas. A Apiiro vende ferramentas de segurança para o desenvolvimento com auxílio de IA, então a pesquisa também funciona como argumento de venda. A empresa não testou se as credenciais ainda funcionavam, embora uma das organizações avisadas tenha confirmado que sua chave estava ativa. Um valor foi contabilizado como segredo quando correspondia a um formato conhecido de chave ou quando aparecia junto ao endereço de um servidor público e um avaliador de IA concordava com a classificação, o que deixa alguma margem para falsos positivos. A Apiiro também afirma que o número de commits com Claude como coautor não prova que o Claude tenha introduzido todas as credenciais expostas. E o GitHub é apenas a parte visível do problema: como o arquivo é um JSON simples na pasta do projeto, ele também pode acabar em um pacote npm, uma imagem Docker, um arquivo zip ou uma pasta sincronizada.

A primeira recomendação dos pesquisadores é trocar as credenciais: mude todas as senhas, tokens e chaves que já apareceram no arquivo antes de começar a limpar qualquer coisa, porque um segredo que ficou público está comprometido, mesmo que você reescreva o histórico. Em seguida, pare de rastrear o arquivo com git rm –cached, inclua-o no .gitignore do próprio repositório e abra /permissions dentro do Claude Code para apagar qualquer regra salva que contenha um segredo. Usar variáveis de ambiente para se referir às credenciais faz com que uma regra salva guarde um nome como $DB_URL, em vez da senha. E aprovar padrões, em vez de comandos pontuais, evita que argumentos literais sejam gravados no arquivo.

Usuários já haviam alertado sobre isso. Uma denúncia de bug registrada em 11 de agosto de 2025 dizia que comandos aprovados com chaves de API e tokens estavam sendo armazenados palavra por palavra em settings.local.json. Um bot automatizado encerrou o chamado com o status “não planejado” em 3 de janeiro, após 60 dias sem atividade. A Apiiro, que publicou suas descobertas em 6 de novembro, afirma que os quatro relatos relacionados que cita foram todos encerrados pelo mesmo bot; o mais recente, em 6 de novembro, não recebeu resposta da Anthropic. Em 2 de novembro, todos os arquivos expostos encontrados pela empresa continuavam na ramificação principal de seus repositórios — em metade dos casos, havia pelo menos 217 dias.

Nem o The Hacker News nem a Apiiro relatam ter recebido uma resposta da Anthropic, e o comportamento documentado continua igual: na próxima vez que alguém escolher “não perguntar novamente” para um comando com uma senha digitada nele, essa senha também será salva.

Tags: , , , , ,

Adicione-nos no Google

Discussão

Há 0 comentários.