Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-71557-poc — Preuve de concept locale pour CVE-2026-71557 démontrant une traversée de chemin dans le stockage de références du système de fichiers de go-git, incluant la logique d'exploitation et la comparaison entre les versions vulnérable et corrigée. | Kitploit
Outils/GitHubGitHub/saku0512/cve-2026-71557-poc
Analyse des VulnérabilitésExploitationTests d'IntrusionSécurité de la Chaîne LogistiqueApprentissage et Éducation
GitHubsaku0512/cve-2026-71557-poc

CVE-2026-71557-poc

Preuve de concept locale pour CVE-2026-71557 démontrant une traversée de chemin dans le stockage de références du système de fichiers de go-git, incluant la logique d'exploitation et la comparaison entre les versions vulnérable et corrigée.

Voir le dépôt
5il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-71557 : PoC de path traversal dans le nom de référence de go-git

Version anglaise

Aperçu

Ce dépôt est un PoC local sûr de CVE-2026-71557, basé sur l'avis public de go-git GHSA-qgq7-7hm3-q39j.

Avant le correctif, storage/filesystem n'avait pas suffisamment validé le nom des loose references et l'utilisait comme chemin .git/<reference-name>. Ainsi, un nom de référence tel que refs/heads/../../config voyait ses .. normalisés, ce qui permettait d'écraser le fichier .git/config situé en dehors du stockage de références légitime.

Ce PoC appelle les vraies API de go-git et ne cible qu'un faux .git/config créé dans un répertoire temporaire. Il n'établit aucune connexion à un serveur Git externe, ne modifie aucun dépôt existant et n'exécute aucune commande arbitraire.

Avertissement

Ce projet est destiné uniquement à des fins éducatives et à des tests de sécurité éthiques autorisés. Ne l'utilisez pas contre un environnement sans permission.

Détails de la vulnérabilité

  • ID CVE : CVE-2026-71557
  • Avis GitHub : GHSA-qgq7-7hm3-q39j
  • Type : Path Traversal (CWE-22)
  • Sévérité : Moyenne
  • CVSS v3.1 : 6.3 (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:H/A:L)
  • Versions affectées :
    • github.com/go-git/go-git/v5 <= 5.19.1
    • github.com/go-git/go-git/v6 <= 6.0.0-alpha.4
  • Versions corrigées :
    • v5 : 5.19.2
    • v6 : 6.0.0-alpha.5
  • Stockage concerné : le stockage de références dotgit de storage/filesystem
  • Stockage non concerné : storage/memory

Cause racine

Dans la version v5.19.1 antérieure au correctif, DotGit.SetRef transmettait directement le nom de référence comme nom de fichier à setRef.

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

La racine du stockage adossé au filesystem est généralement .git. Le nom de référence refs/heads/../../config devient config après normalisation du chemin ; l'écriture de la valeur de référence se transforme donc en écriture de .git/config. Si un serveur Git malveillant advertise un tel nom de référence et que le traversal subsiste après le mapping des refspecs lors d'un clone/fetch, un nom de référence contrôlé par l'attaquant peut atteindre ce chemin de code.

La version corrigée valide les noms de référence aux points d'entrée tels que SetRef, Ref et RemoveRef du stockage filesystem, et rejette tout nom sortant du stockage de références.

PoC

Prérequis

  • Go 1.25 ou version ultérieure, ou un Go avec récupération automatique de toolchain activée
  • Connexion réseau nécessaire au premier téléchargement des modules

Reproduction avec la version vulnérable

go.mod est verrouillé sur la version vulnérable v5.19.1.

root@kitploit:~
go run .

Sortie principale attendue :

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.

Le PoC effectue les opérations suivantes :

  1. Crée un stockage Git adossé au filesystem dans le répertoire temporaire du système d'exploitation
  2. Écrit un marqueur sûr dans .git/config
  3. Passe une référence de type hash nommée refs/heads/../../config à SetReference
  4. Vérifie que le marqueur a été remplacé par le hash de la référence
  5. Supprime automatiquement le répertoire temporaire

Comparaison entre la version vulnérable et la version corrigée

Le script suivant exécute séquentiellement le même PoC avec v5.19.1 et v5.19.2 en utilisant des modules temporaires, sans modifier le go.mod du dépôt.

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

Verdict attendu :

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.

Si vous souhaitez consulter les fichiers temporaires, ajoutez -keep. Les répertoires affichés ne sont alors pas supprimés automatiquement ; supprimez-les manuellement après vérification.

root@kitploit:~
go run . -keep

Portée du PoC

Ce PoC vérifie l'écrasement de métadonnées par path traversal en appelant directement la porte d'entrée vulnérable du stockage filesystem décrite dans l'avis. Il n'implémente ni serveur de protocole Git malveillant, ni couche transport de clone/fetch.

Remédiation

Les utilisateurs de v5 doivent mettre à jour vers v5.19.2 ou une version ultérieure, et les utilisateurs de l'alpha v6 vers v6.0.0-alpha.5 ou une version ultérieure. En attendant la mise à jour, évitez de cloner ou de récupérer (fetch) depuis des serveurs Git non fiables avec un stockage adossé au filesystem. Les applications qui n'utilisent que storage/memory ne sont pas affectées par cette vulnérabilité.

Références

  • GHSA-qgq7-7hm3-q39j
  • PR #2247 de go-git (correctif v6)
  • PR #2254 de go-git (backport v5)
  • Commit de correctif v5 f3d0cc1
  • Commit de sécurité supplémentaire v5 3b306ef
Télécharger l’outil