Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-71557-poc — Lokaler Proof-of-Concept für CVE-2026-71557, der Pfad-Traversal im Dateisystem-Referenzspeicher von go-git demonstriert, einschließlich Exploit-Logik und Vergleich zwischen verwundbaren und gepatchten Versionen. | Kitploit
Tools/GitHubGitHub/saku0512/cve-2026-71557-poc
SchwachstellenanalyseExploitationPenetrationstestsLieferkettensicherheitLernen & Bildung
GitHubsaku0512/cve-2026-71557-poc

CVE-2026-71557-poc

Lokaler Proof-of-Concept für CVE-2026-71557, der Pfad-Traversal im Dateisystem-Referenzspeicher von go-git demonstriert, einschließlich Exploit-Logik und Vergleich zwischen verwundbaren und gepatchten Versionen.

Repository anzeigen
5vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

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

English version

Übersicht

Dieses Repository ist ein sicherer lokaler PoC für CVE-2026-71557 auf Grundlage des öffentlichen Advisories von go-git GHSA-qgq7-7hm3-q39j.

Das nicht korrigierte storage/filesystem validierte die Namen von Loose References nicht ausreichend und verwendete sie als Pfad .git/<reference-name>. Dadurch wird bei einem Referenznamen wie refs/heads/../../config das .. normalisiert, sodass .git/config außerhalb des eigentlichen Reference Storages überschrieben werden kann.

Dieser PoC ruft die tatsächliche go-git-API auf und zielt ausschließlich auf eine in einem temporären Verzeichnis erstellte Dummy-.git/config. Es werden keine Verbindungen zu externen Git-Servern hergestellt, keine vorhandenen Repositorys verändert und keine beliebigen Befehle ausgeführt.

Haftungsausschluss

Dieses Projekt dient ausschließlich Bildungszwecken und autorisierten ethischen Sicherheitstests. Verwenden Sie es nicht gegen Umgebungen ohne entsprechende Genehmigung.

Details zur Schwachstelle

  • CVE ID: CVE-2026-71557
  • GitHub Advisory: GHSA-qgq7-7hm3-q39j
  • Typ: Path Traversal (CWE-22)
  • Schweregrad: 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)
  • Betroffene Versionen:
    • github.com/go-git/go-git/v5 <= 5.19.1
    • github.com/go-git/go-git/v6 <= 6.0.0-alpha.4
  • Korrigierte Versionen:
    • v5: 5.19.2
    • v6: 6.0.0-alpha.5
  • Betroffener Storage: dotgit-Reference-Storage von storage/filesystem
  • Nicht betroffener Storage: storage/memory

Grundursache

In der nicht korrigierten Version v5.19.1 übergab DotGit.SetRef den Referenznamen unverändert als Dateinamen an setRef.

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

Die Wurzel des filesystem-backed Storages ist normalerweise .git. Der Referenzname refs/heads/../../config wird nach der Pfadnormalisierung zu config, wodurch aus dem Schreiben des Referenzwerts ein Schreiben von .git/config wird. Wenn ein bösartiger Git-Server solche Referenznamen ankündigt und die Traversal auch nach dem Refspec-Mapping bei Clone/Fetch erhalten bleibt, können angreiferkontrollierte Referenznamen diesen Codepfad erreichen.

Die korrigierte Version validiert Referenznamen an den Einstiegspunkten wie SetRef, Ref und RemoveRef des Filesystem-Storages und lehnt Namen ab, die aus dem Reference Storage ausbrechen.

PoC

Voraussetzungen

  • Go 1.25 oder neuer, oder Go mit aktiviertem automatischem Toolchain-Download
  • Netzwerkverbindung für den erstmaligen Modul-Download

Reproduktion mit der verwundbaren Version

go.mod ist auf die verwundbare Version v5.19.1 festgelegt.

root@kitploit:~
go run .

Erwartete Hauptausgabe:

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.

Der PoC führt folgende Schritte aus:

  1. Erstellt einen filesystem-backed Git-Storage im temporären Verzeichnis des Betriebssystems
  2. Schreibt einen sicheren Marker in .git/config
  3. Übergibt eine Hash-Referenz namens refs/heads/../../config an SetReference
  4. Verifiziert, dass der Marker durch den Referenz-Hash ersetzt wurde
  5. Löscht das temporäre Verzeichnis automatisch

Vergleich zwischen verwundbarer und korrigierter Version

Das folgende Skript führt denselben PoC nacheinander mit v5.19.1 und v5.19.2 unter Verwendung eines temporären Moduls aus, ohne die go.mod im Repository zu verändern.

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

Erwartetes Ergebnis:

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.

Falls Sie die temporären Dateien überprüfen möchten, verwenden Sie -keep. Das angezeigte Verzeichnis wird nicht automatisch gelöscht; entfernen Sie es nach der Prüfung manuell.

root@kitploit:~
go run . -keep

Umfang des PoC

Dieser PoC ruft die im Advisory beschriebenen verwundbaren Einstiegspunkte des Filesystem-Storages direkt auf und verifiziert das Überschreiben von Metadaten durch Path Traversal. Es wird weder ein bösartiger Git-Protocol-Server noch eine Transport-Schicht für Clone/Fetch implementiert.

Gegenmaßnahmen

v5-Nutzer sollten auf v5.19.2 oder neuer aktualisieren, v6-alpha-Nutzer auf v6.0.0-alpha.5 oder neuer. Solange ein Update nicht möglich ist, sollten Sie mit filesystem-backed Storage nicht von nicht vertrauenswürdigen Git-Servern klonen oder fetchen. Anwendungen, die ausschließlich storage/memory verwenden, sind von dieser Schwachstelle nicht betroffen.

Referenzen

  • 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
Tool herunterladen