O projeto Git publicou correções de segurança para uma falha que afeta principalmente máquinas multiusuário e ambientes em que comandos Git são executados a partir de diretórios compartilhados. A CVE-2022-24765 permite que um usuário malicioso posicione um diretório .git acima do diretório de trabalho de outra pessoa e influencie a configuração lida pelo Git.1
O risco parece sutil porque explora uma convenção central da ferramenta: ao rodar um comando, o Git procura a raiz do repositório subindo a árvore de diretórios. Em uma estação comum, isso é quase invisível. Em servidores compartilhados, runners, máquinas de laboratório, desktops Windows com C:\.git ou ambientes de build improvisados, essa busca pode atravessar fronteiras de propriedade que não deveriam ser confiadas.
Como algumas variáveis de configuração podem levar à execução de comandos, a leitura de um arquivo de configuração controlado por outro usuário abre caminho para execução arbitrária. A recomendação imediata é atualizar para Git 2.35.2.
A confiança passa a considerar propriedade
A mudança importante do Git 2.35.2 é interromper a travessia quando a busca por .git encontra uma mudança de dono no caminho. Na prática, o Git deixa de presumir que todo diretório acima do atual pertence ao mesmo contexto de confiança. Isso é uma decisão coerente com a realidade de ambientes modernos, onde um processo pode rodar em workspace efêmero, volume montado, pasta de usuário ou diretório temporário compartilhado.
Para exceções legítimas, aparece a configuração multivalorada safe.directory. Ela permite declarar explicitamente quais diretórios são considerados seguros mesmo quando a regra de propriedade bloquearia a operação. É uma válvula necessária para monorepos, contêineres, mounts e automações que têm donos de arquivo diferentes do usuário que executa o Git.
O ponto operacional é que safe.directory não deve virar um * aplicado sem critério. A lista precisa refletir caminhos controlados, previsíveis e auditáveis. Se um runner exige a exceção para funcionar, o ideal é entender por que a propriedade está divergente e se a configuração do workspace está correta.
CI, IDEs e shells também rodam Git
Muita gente não executa Git apenas digitando git status. IDEs, prompts customizados, extensões de shell, ferramentas de build, scripts de release e clientes gráficos chamam Git em segundo plano. Esse detalhe amplia a superfície da CVE-2022-24765, porque o usuário pode estar em um diretório não confiável sem perceber que uma ferramenta auxiliar está invocando Git ali.
Em ambientes onde a atualização não pode ser aplicada imediatamente, a mitigação indicada é configurar GIT_CEILING_DIRECTORIES para limitar até onde o Git pode subir na árvore de diretórios. Em Linux, por exemplo, apontar para /home reduz a chance de um .git controlado fora do perfil do usuário ser considerado. Ainda assim, mitigação não substitui atualização.
Equipes de plataforma devem olhar para imagens base, agentes de CI, máquinas Windows compartilhadas, estações de suporte, desktops de laboratório e servidores onde múltiplos usuários têm acesso. A correção é pequena no comando de instalação, mas grande no efeito de governança: ela força o inventário de onde Git é usado implicitamente.
A falha também lembra que ferramentas de desenvolvimento fazem parte da cadeia de execução. Compiladores, gerenciadores de pacote e VCS carregam configuração, hooks e plugins. Quando essas ferramentas atravessam diretórios sem checar fronteiras de confiança, o ambiente de desenvolvimento vira parte da superfície de ataque.
- GitHub Blog, "Git security vulnerability announced" e "Git security vulnerability announced", 12 abr. 2022. ↩