
Compartilhar:
Yonatan já participou de alguns projetos incríveis tanto no meio acadêmico quanto no setor privado — desde C/C++, passando por Matlab, até PHP e JavaScript. Ex-CTO da Webiks e arquiteto de software na WalkMe. Atualmente, ele é arquiteto de software na Vonage e instrutor na Egghead.
Como remover um token secreto do seu histórico do Git
Introdução
Neste artigo, você aprenderá como remover com segurança tokens de autenticação expostos de todo o histórico do seu repositório Git usando BFG, uma poderosa ferramenta de limpeza. Você também compreenderá os riscos de segurança associados a segredos confirmados e dominará o processo passo a passo para sanear seu repositório de código e proteger os ativos digitais da sua organização. Vamos começar!
O Alerta de Segurança Inesperado
Imagine o seguinte: você é um desenvolvedor, totalmente imerso em um sprint importante, quando, de repente, um ticket do JIRA chega à sua caixa de entrada. O assunto do e-mail te dá um calafrio: “Problema crítico de segurança – Token do NPM exposto no histórico do repositório.”
A verificação automatizada de segurança revelou algo alarmante: um token de autenticação acidentalmente enviado para o repositório há anos, enterrado em commits de 4, 7 e 8 anos atrás. Pode parecer história antiga, mas no mundo da segurança cibernética, segredos antigos podem ser bombas-relógio. E seu CISO pode ser bem insistente em resolver esses problemas (com razão…).
Ok, você pode parar de imaginar, porque isso aconteceu conosco na Vonage. Felizmente, você pode aprender com a nossa experiência.
Os riscos ocultos dos tokens expostos
Um token de autenticação exposto é mais do que apenas um pequeno descuido. Ele representa uma vulnerabilidade de segurança significativa que poderia, potencialmente:
Permitir acesso não autorizado a registros de pacotes privados
Expor a infraestrutura sensível da empresa
Oferecer um possível ponto de entrada para agentes mal-intencionados
Riscos relacionados à propriedade intelectual da empresa
Pode violar os requisitos de conformidade
O dano à reputação causado por uma violação de segurança pode superar em muito a conveniência momentânea de uma ação precipitada.
A primeira coisa que você gostaria de fazer nesse caso é “rotacionar” a(s) chave(s) secreta(s) envolvida(s). Basta zerá-las e criar novas. Mas o risco não termina aí, pois, como alguém comentou em uma discussão em um grupo de JavaScript, chaves antigas e obsoletas podem conter uma pista sobre o próprio algoritmo do gerador de chaves. Não sou especialista em segurança cibernética (nem de longe), então vou confiar na opinião dos especialistas sobre isso. Como, então, nos livramos da chave exposta no repositório?
Conheça o BFG: seu melhor amigo na limpeza do histórico do Git
A solução? O BFG (Big Fast Git) é uma ferramenta poderosa projetada para limpar os históricos dos repositórios do Git de forma rápida e eficiente. Aqui está um guia passo a passo para a remoção de tokens:
Peça a todos que estão trabalhando no repositório que aguardem alguns minutos até que você envie suas alterações.
Baixe o BFG e copie para a pasta correspondente.
Clone o repositório usando um espelho:
git clone --mirror https://github.com/your-name/your-repo.gitCopiarSugiro fazer isso duas vezes em duas pastas diferentes, para que você tenha um backup do seu repositório “antigo” caso algo dê errado.
Crie um arquivo tokens.txt com a sintaxe de substituição:
old_token1==>PLACE_HOLDER1 old_token2==>PLACE_HOLDER2 ...CopiarIsso fará com que o BFG substitua todas as ocorrências dos tokens antigos por seus substitutos.
Um exemplo disso seria:
ab23234-89723c-aa7b7c==>${NPM_TOKEN}CopiarExecute o BFG com o arquivo substituto (certifique-se de estar na pasta raiz do repositório):
java -jar bfg-1.14.0.jar --replace-text tokens.txt your-repo.git --no-blob-protectionCopiarLimpar o repositório:
cd your-repo.git git reflog expire --expire=now --all && git gc --prune=now --aggressiveCopiarVerifique se o token foi substituído clonando o espelho local e executando o comando “grep” nele:
cd .. && git clone your-repo.git && cd your-repo && git grep -n "REPLACE _WITH_YOUR_TOKENCopiarSe isso retornar 0 resultados, significa que funcionou.
Enviar as alterações à força:
cd your-repo.git git push --mirrorCopiarPeça aos seus colegas de equipe para baixarem e aplicarem as alterações:
git fetch git reset --hard origin/mainCopiar
É isso aí. Seu repositório agora está limpo. A partir de agora, imagino que a mesma ferramenta que te alertou sobre os tokens possa dar o alarme durante um processo de PR, antes que o token se “espalhe” para o branch principal. Certifique-se de que isso aconteça 😉
Dicas profissionais para o gerenciamento de tokens
Nunca envie tokens diretamente para repositórios
Utilize variáveis de ambiente ou ferramentas seguras de gerenciamento de segredos
Implemente ganchos de pré-confirmação para evitar confirmações acidentais de tokens
Faça auditorias regulares no histórico do seu repositório
Troque os tokens periodicamente, especialmente se suspeitar que eles tenham sido expostos
Considerações finais
Em uma época de crescentes ameaças à segurança cibernética, o gerenciamento proativo de repositórios não é apenas uma boa prática — é uma necessidade. Ferramentas como o BFG oferecem aos desenvolvedores mecanismos poderosos para corrigir erros do passado e manter a integridade de seus repositórios de código.
Embora tenhamos nos concentrado na substituição de tokens, o BFG é uma ferramenta versátil capaz de:
Remoção de arquivos grandes do histórico do repositório
Limpeza de informações confidenciais
Reduzindo o tamanho do repositório
Limpeza de commits antes de tornar os projetos de código aberto
Se você concorda com os motivos pelos quais deve usar commits convencionais, o BFG pode permitir que você aprimore seus commits antigos com uma versão significativa e um texto de changelog.
Lembre-se de que, no desenvolvimento de software, o que é confirmado nem sempre é definitivo, graças a ferramentas como o BFG.
Conte-nos quais outros problemas com o Git você está enfrentando na nossa Slack da Comunidade Vonage ou envie-nos uma mensagem no X, antes conhecido como Twitter.
Compartilhar:
Yonatan já participou de alguns projetos incríveis tanto no meio acadêmico quanto no setor privado — desde C/C++, passando por Matlab, até PHP e JavaScript. Ex-CTO da Webiks e arquiteto de software na WalkMe. Atualmente, ele é arquiteto de software na Vonage e instrutor na Egghead.