Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-71557-poc — Prova di concetto locale per CVE-2026-71557 che dimostra il path traversal nell'archiviazione dei riferimenti su filesystem di go-git, inclusa la logica dell'exploit e il confronto tra la versione vulnerabile e quella corretta. | Kitploit
Strumenti/GitHubGitHub/saku0512/cve-2026-71557-poc
Analisi delle VulnerabilitàExploitPenetration TestingSicurezza della Supply ChainApprendimento e Formazione
GitHubsaku0512/cve-2026-71557-poc

CVE-2026-71557-poc

Prova di concetto locale per CVE-2026-71557 che dimostra il path traversal nell'archiviazione dei riferimenti su filesystem di go-git, inclusa la logica dell'exploit e il confronto tra la versione vulnerabile e quella corretta.

Vedi Repository
111 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-71557: go-git reference name path traversal PoC

Versione inglese

Panoramica

Questo repository è un PoC locale e sicuro basato sull'avviso pubblico di go-git GHSA-qgq7-7hm3-q39j per CVE-2026-71557.

Prima della correzione, storage/filesystem non validava a sufficienza i nomi dei loose reference e li utilizzava come percorso .git/<reference-name>. Di conseguenza, passando un nome di riferimento come refs/heads/../../config, i .. venivano normalizzati e si poteva sovrascrivere .git/config, che si trova al di fuori del reference storage legittimo.

Questo PoC invoca le API reali di go-git e prende di mira esclusivamente un .git/config fittizio creato in una directory temporanea. Non effettua connessioni a server Git esterni, non modifica repository esistenti e non esegue comandi arbitrari.

Dichiarazione di non responsabilità

Questo progetto è destinato esclusivamente a scopi educativi e a verifiche di sicurezza etiche autorizzate. Non utilizzarlo in ambienti non autorizzati.

Dettagli della vulnerabilità

  • CVE ID: CVE-2026-71557
  • GitHub Advisory: GHSA-qgq7-7hm3-q39j
  • Tipo: Path Traversal (CWE-22)
  • Gravità: 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)
  • Versioni interessate:
    • github.com/go-git/go-git/v5 <= 5.19.1
    • github.com/go-git/go-git/v6 <= 6.0.0-alpha.4
  • Versioni corrette:
    • v5: 5.19.2
    • v6: 6.0.0-alpha.5
  • Storage interessato: reference storage dotgit di storage/filesystem
  • Storage non interessato: storage/memory

Causa principale

Nella v5.19.1 precedente alla correzione, DotGit.SetRef passava il nome del riferimento direttamente a setRef come nome di file.

fileName := r.Name().String()
return d.setRef(fileName, content, old)

La root dello storage basato su filesystem è solitamente .git. Poiché il nome di riferimento refs/heads/../../config diventa config dopo la normalizzazione del percorso, la scrittura del valore del riferimento si trasforma nella scrittura di .git/config. Se un server Git malevolo annuncia tali nomi di riferimento e la traversal sopravvive al mapping dei refspec durante clone/fetch, nomi di riferimento controllati dall'attaccante possono raggiungere questo percorso di codice.

La versione corretta valida i nomi dei riferimenti nei punti di ingresso di filesystem storage come SetRef, Ref e RemoveRef, rifiutando i nomi che escono dal reference storage.

PoC

Requisiti

  • Go 1.25 o successivo, oppure Go con il download automatico della toolchain abilitato
  • Connessione di rete necessaria per il download iniziale dei moduli

Riproduzione con la versione vulnerabile

go.mod è fissato alla versione vulnerabile v5.19.1.

go run .

Output principale atteso:

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

Il PoC esegue le seguenti operazioni:

  1. Crea uno storage Git basato su filesystem in una directory temporanea del sistema operativo
  2. Scrive un marker sicuro in .git/config
  3. Passa un hash reference di nome refs/heads/../../config a SetReference
  4. Verifica che il marker sia stato sostituito con l'hash del riferimento
  5. Elimina automaticamente la directory temporanea

Confronto tra versione vulnerabile e versione corretta

Il seguente script esegue in sequenza lo stesso PoC con le versioni v5.19.1 e v5.19.2 utilizzando moduli temporanei, senza modificare go.mod del repository.

./scripts/run-version-matrix.sh

Esito atteso:

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 desideri ispezionare i file temporanei, usa l'opzione -keep. La directory indicata non viene eliminata automaticamente, quindi rimuovila manualmente dopo la verifica.

go run . -keep

Ambito del PoC

Questo PoC verifica la sovrascrittura dei metadati tramite path traversal invocando direttamente i punti di ingresso vulnerabili di filesystem storage descritti nell'avviso. Non implementa un server del protocollo Git malevolo né il livello di trasporto di clone/fetch.

Mitigazione

Gli utenti della v5 devono aggiornare a v5.19.2 o successiva, gli utenti della v6 alpha a v6.0.0-alpha.5 o successiva. Finché non è possibile aggiornare, non eseguire clone/fetch da server Git non attendibili con storage basato su filesystem. Le applicazioni che utilizzano esclusivamente storage/memory non sono interessate da questa vulnerabilità.

Riferimenti

  • 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
Scarica lo strumento