Ce qui se passe
Le 10 novembre, le projet Git a publié Git 2.56.1, avec des correctifs pour six branches de maintenance : 2.55.1, 2.54.1, 2.53.1, 2.52.1, 2.51.3 et 2.50.2. Six failles sont corrigées, dont une exécution de code pendant un clone récursif.
Les six failles
- CVE-2026-111760 — code exécuté au clone récursif. Une troncature d'entier dans la gestion de l'index : un
chemin extrêmement long est validé sous un nom, puis écrit sous un nom plus court. L'attaquant remplace ainsi le
fichier
.gitd'un sous-module par un lien symbolique vers un dossier qui contient sa configuration ou ses hooks ; quand Git s'en sert, le code s'exécute, pendant le clone. Les chemins trop longs sont désormais refusés avant toute troncature. Avis : GHSA-vp2w-7xxj-jvxr. - CVE-2026-113408 — écriture hors du dossier des références. En clonant un dépôt vide en protocole v2, le
serveur peut annoncer un
HEADsymbolique vers une branche sans commit ; Git stockait la cible sans la vérifier. Avec le stockage des références en fichiers, une mise à jour ultérieure de cette branche peut écrire ailleurs. Les noms de références reçus en protocole v2 sont maintenant tous validés. - CVE-2026-114467 — corruption de pile. En retirant les signatures GPG d'un message, Git en supposait deux au plus ; fusionner un tag qui en porte davantage écrit au-delà d'un tableau fixe. Déni de service possible, y compris pour une forge qui fusionne pour ses utilisateurs.
- CVE-2026-114469 — lecture hors limites. La limite d'environ 1 Gio sur les patchs ne regardait que la taille fournie ; un patch binaire compressé la dépasse une fois décodé et fait planter Git. La taille décompressée déclarée est désormais contrôlée.
- CVE-2026-105437 — corruption du tas. Le calcul de la taille d'un résultat de fusion peut déborder, par
exemple avec beaucoup de conflits et un attribut
conflict-marker-sizeélevé. - CVE-2026-114466 — fichiers lus ou écrits via fast-import.
rewrite-submodules-frometrewrite-submodules-topouvaient lire des fichiers arbitraires,export-pack-edgescréer des fichiers ou y ajouter des données. Ils sont refusés dans un flux d'entrée, sauf avec--allow-unsafe-features, à réserver aux flux produits par un programme de confiance.
Des contrôles de débordement s'ajoutent aussi aux allocations d'entrées d'index pendant le checkout.
Pourquoi ça compte
Le clone récursif est un réflexe, en local comme en CI. Et plusieurs de ces failles visent tout service qui manipule des dépôts pour le compte de tiers : forges, outils de revue, robots de fusion.
Comment s'y prendre
- Contrôlez la version sur les postes et dans les images de CI :
git --version # attendu : 2.56.1, ou le correctif de votre branche- Mettez à jour via votre système ou votre distribution, ainsi que les applications qui embarquent leur propre Git.
- GitHub Enterprise Server : 3.19.15, 3.20.11, 3.21.9 ou 3.22.4. github.com et GitHub Enterprise Cloud sont déjà corrigés ; GitHub Desktop, Codespaces et Actions recevront un Git corrigé.
- En attendant : clonez seulement depuis des serveurs de confiance, évitez les clones récursifs de dépôts inconnus, les fusions de contenu ou de tags non fiables, les patchs binaires et les flux fast-import d'origine douteuse. Ces précautions ne remplacent pas la mise à jour.
Source : GitHub Blog, billet d'Elijah Newren, en anglais. Notes de version : Git 2.56.1.