Diretório .git exposto: o vazamento de código-fonte à vista de todos
Quando um servidor web serve o diretório .git junto com os arquivos da sua aplicação, um atacante pode baixar objetos suficientes para reconstruir todo o seu código-fonte — incluindo todos os segredos que já foram commitados, mesmo que tenham sido removidos num commit posterior. O AppSafe sinaliza isso como crítico.
O que é
O Git armazena o repositório completo — cada arquivo, cada commit, a ponta de cada branch — num diretório oculto .git na raiz do projeto. Se esse diretório for parar dentro da sua raiz web e o servidor não bloquear o acesso a ele, os arquivos /.git/config, /.git/HEAD e o armazenamento de objetos em /.git/objects/ podem ser baixados publicamente.
Reconstruir o código-fonte completo a partir de um diretório .git exposto é simples. Ferramentas como o git-dumper baixam o índice e depois todos os objetos referenciados, produzindo uma cópia de trabalho totalmente funcional. Os atacantes não precisam de acesso a shell — só de um navegador.
Por que importa
É quase certo que o seu código-fonte contém informações que aumentam o risco: API keys hardcoded (muitas vezes em commits antigos), schemas de banco de dados, caminhos de endpoints internos, regras de negócio e fluxos de autenticação. Mesmo que nenhum segredo esteja commitado hoje, o histórico está cheio de material que atacantes podem explorar.
O histórico do Git é permanente por design. Um segredo commitado anos atrás e depois removido continua no armazenamento de objetos e é baixado junto com todo o resto. Rotacioná-lo é a única forma de neutralizá-lo.
Como corrigir
Negue todas as requisições cujo caminho comece com /.git/. Retorne 404 em vez de 403 para não confirmar que o diretório existe.
location ~ /\.git {
deny all;
return 404;
}A correção mais confiável é nunca publicar o diretório .git na raiz de documentos. Estruture o seu build para que a saída compilada vá para um diretório public/ separado e faça deploy só dele, não da raiz do projeto.
Depois de publicar a correção, abra https://yourdomain.com/.git/config num navegador. Deve retornar 404, não o conteúdo da sua configuração do Git. O AppSafe verifica isso de novo a cada varredura.
Se o diretório esteve acessível, considere comprometidos todas as API keys, senhas e tokens que já apareceram em qualquer commit. Rotacione-os — remover o commit não basta, porque o objeto continua existindo nos pack files que um atacante pode já ter baixado.
FAQ
Faço deploy numa plataforma gerenciada (Vercel, Netlify, Fly.io) — estou em risco?
Plataformas gerenciadas que fazem o build a partir do código-fonte normalmente publicam só a saída do build, então o diretório .git não é servido. O risco é maior em deploys em VPS, contêineres Docker construídos a partir da raiz do projeto ou exportações de sites estáticos que copiam toda a árvore de trabalho.
O que exatamente o AppSafe verifica?
O AppSafe requisita /.git/config e /.git/HEAD e verifica se o corpo da resposta parece um arquivo real do Git (correspondendo aos padrões [core] ou ref:). Uma página genérica com 200 que não tenha conteúdo do Git não é sinalizada.
Posso simplesmente apagar o diretório .git no servidor?
Sim, se você só precisa dos arquivos publicados para o app rodar. Mas garanta que o seu processo de deploy não o copie de volta no próximo push. Bloqueá-lo também no nível do servidor web é uma defesa extra para quando os scripts de deploy não são consistentes.
Seu app está afetado?
O AppSafe verifica isso e dezenas de outros problemas em um único escaneamento grátis.
Escanear meu app grátisDo blog
Falsos crawlers de IA estão caçando seus arquivos .env. Veja como verificar os seus
Scanners de credenciais usam nomes de crawlers de IA para driblar listas de permissão, e pedem um arquivo em especial: o seu .env. Como verificar se o seu está acessível e como protegê-lo.
O vazamento na Railway: como rotacionar os segredos do seu app sem downtime
A Railway pediu a todos os usuários que rotacionassem suas variáveis de ambiente depois que atacantes foram atrás de API keys de IA e de plataformas. Como verificar sua exposição, rotacionar tudo sem derrubar o app e fazer o próximo vazamento doer menos.
PHP2Shell está sendo explorado: como verificar se seu app está exposto
Dois bugs críticos no próprio PHP passaram de "patch lançado" a "explorado ativamente" em poucos dias. Como descobrir se algo que você hospeda usa uma versão afetada e o que fazer hoje mesmo.
Guias relacionados
Arquivos .env expostos: como atacantes acham seus segredos
Um único .env acessível pode entregar toda a sua stack.
Source maps em produção vazam o seu código-fonte
Arquivos .map publicados entregam o seu código original.
Índices de diretório abertos: quando o seu servidor de arquivos lista tudo
Um servidor de arquivos que lista o próprio conteúdo dá aos atacantes um inventário de graça.
Backups de banco de dados expostos: o que acontece quando /backup.sql está acessível
Um dump .sql acessível é a entrega completa de todo o seu banco de dados.