CVE-2026-114145
Publiée le 2026-10-21 · Dernière modification le 2026-10-23
Les versions de GitPython antérieures à 3.2.1 sont concernées. Cette bibliothèque permet aux applications Python d'interagir avec des dépôts Git de manière programmatique. La faille provient du fait que la fonction `create_submodule()` ne valide pas le chemin de destination avant de cloner un dépôt, ce qui permet à un sous-module malveillant d'écrire des fichiers dans des répertoires sensibles tels que `.git/hooks`.
Un attaquant peut utiliser cette vulnérabilité pour implanter un script exécutable qui s'exécute automatiquement lors d'opérations Git ultérieures, entraînant une compromission complète du système (perte de confidentialité, d'intégrité et de disponibilité). Il s'agit d'une attaque complexe qui nécessite un accès réseau et une interaction de l'utilisateur, plus précisément que l'application cible soit configurée pour accepter un chemin de sous-module non fiable provenant de l'attaquant.
DÉTAIL DU VECTEUR CVSS
RÉFÉRENCES
Description officielle du NVD (en anglais)
GitPython is a python library used to interact with Git repositories. Prior to 3.2.1, create_submodule() in git/objects/submodule/base.py accepts an attacker-influenced submodule path such as .git/hooks and invokes _clone_repo() before safely rejecting the destination. In 3.1.x, _validate_repo_path() does not exist and the call succeeds silently, while in 3.2.0 and later affected revisions the check in git/index/base.py raises ValueError only after the clone has written to disk and does not remove the planted file. An attacker-controlled submodule can therefore place an executable post-checkout hook that a later Git operation executes. Exploitation requires an application to accept an untrusted submodule path and a clone destination such as .git/hooks that is empty enough for Git to clone into it, which commonly means that default sample hooks are absent. This issue is fixed in version 3.2.1.