Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-71557-poc — Prova de conceito local para CVE-2026-71557 demonstrando travessia de caminho no armazenamento de referências do sistema de arquivos do go-git, incluindo lógica de exploit e comparação entre versões vulnerável e corrigida. | Kitploit
Ferramentas/GitHubGitHub/saku0512/cve-2026-71557-poc
Análise de VulnerabilidadesExploraçãoTestes de PenetraçãoSegurança da Cadeia de SuprimentosAprendizado e Educação
GitHubsaku0512/cve-2026-71557-poc

CVE-2026-71557-poc

Prova de conceito local para CVE-2026-71557 demonstrando travessia de caminho no armazenamento de referências do sistema de arquivos do go-git, incluindo lógica de exploit e comparação entre versões vulnerável e corrigida.

Ver Repositório
há 12 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-71557: go-git PoC de path traversal no nome de referência

Versão em inglês

Visão geral

Este repositório é um PoC local e seguro da CVE-2026-71557, baseado no advisory público do go-git GHSA-qgq7-7hm3-q39j.

Antes da correção, o storage/filesystem não validava suficientemente o nome das loose references e o usava como caminho .git/<reference-name>. Por isso, ao passar um nome de referência como refs/heads/../../config, os .. eram normalizados, permitindo sobrescrever o .git/config, que fica fora do reference storage original.

Este PoC chama a API real do go-git e tem como alvo apenas um .git/config fictício criado em um diretório temporário. Ele não se conecta a servidores Git externos, não modifica repositórios existentes nem executa comandos arbitrários.

Aviso legal

Este projeto destina-se exclusivamente a fins educacionais e a testes de segurança éticos autorizados. Não o utilize em ambientes sem permissão.

Detalhes da vulnerabilidade

  • CVE ID: CVE-2026-71557
  • GitHub Advisory: GHSA-qgq7-7hm3-q39j
  • Tipo: Path Traversal (CWE-22)
  • Severidade: Medium
  • CVSS v3.1: 6.3 (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:H/A:L)
  • Versões afetadas:
    • github.com/go-git/go-git/v5 <= 5.19.1
    • github.com/go-git/go-git/v6 <= 6.0.0-alpha.4
  • Versões corrigidas:
    • v5: 5.19.2
    • v6: 6.0.0-alpha.5
  • Armazenamento afetado: reference storage dotgit do storage/filesystem
  • Armazenamento não afetado: storage/memory

Causa raiz

Na v5.19.1, anterior à correção, o DotGit.SetRef passava o nome da referência diretamente como nome de arquivo para setRef.

root@kitploit:~
fileName := r.Name().String()
return d.setRef(fileName, content, old)

A raiz do storage com suporte a filesystem normalmente é .git. O nome de referência refs/heads/../../config torna-se config após a normalização do caminho; portanto, a gravação do valor da referência transforma-se na gravação de .git/config. Se um servidor Git malicioso divulgar um nome de referência como esse e o traversal permanecer após o mapeamento de refspec durante clone/fetch, um nome de referência controlado pelo atacante pode chegar a esse caminho de código.

A versão corrigida valida o nome da referência em pontos de entrada do filesystem storage, como SetRef, Ref e RemoveRef, e rejeita nomes que saiam do reference storage.

PoC

Pré-requisitos

  • Go 1.25 ou posterior, ou Go com obtenção automática de toolchain habilitada
  • Conexão de rede necessária para o download inicial dos módulos

Reprodução na versão vulnerável

O go.mod está fixado na versão vulnerável v5.19.1.

root@kitploit:~
go run .

Saída principal esperada:

root@kitploit:~
[*] go-git version: v5.19.1
[*] crafted reference: refs/heads/../../config
[*] SetReference error: <nil>
[!] VULNERABLE: .git/config was overwritten through the reference name.

O PoC realiza o seguinte:

  1. Criar um Git storage com suporte a filesystem no diretório temporário do SO
  2. Gravar um marcador seguro em .git/config
  3. Passar uma hash reference chamada refs/heads/../../config para SetReference
  4. Verificar se o marcador foi substituído pelo hash da referência
  5. Remover automaticamente o diretório temporário

Comparação entre a versão vulnerável e a corrigida

O script a seguir executa o mesmo PoC com v5.19.1 e v5.19.2 em sequência, usando módulos temporários, sem alterar o go.mod do repositório.

root@kitploit:~
./scripts/run-version-matrix.sh

Resultado esperado:

root@kitploit:~
go-git v5.19.1
[!] VULNERABLE: .git/config was overwritten through the reference name.

go-git v5.19.2
[+] FIXED: the crafted reference was rejected and .git/config stayed intact.

Se quiser inspecionar os arquivos temporários, use -keep. Os diretórios exibidos não são removidos automaticamente; portanto, remova-os manualmente após a inspeção.

root@kitploit:~
go run . -keep

Escopo do PoC

Este PoC valida a sobrescrita de metadados por path traversal chamando diretamente a entrada vulnerável do filesystem storage descrita no advisory. Ele não implementa um servidor de protocolo Git malicioso nem a camada de transporte de clone/fetch.

Mitigação

Usuários do v5 devem atualizar para v5.19.2 ou posterior; usuários do v6 alpha, para v6.0.0-alpha.5 ou posterior. Enquanto não for possível atualizar, não faça clone/fetch de servidores Git não confiáveis usando storage com suporte a filesystem. Aplicações que utilizam apenas storage/memory não são afetadas por esta vulnerabilidade.

Referências

  • GHSA-qgq7-7hm3-q39j
  • go-git PR #2247 (v6 fix)
  • go-git PR #2254 (v5 backport)
  • v5 fix commit f3d0cc1
  • v5 additional safety commit 3b306ef
Baixar ferramenta