CVE-2026-100689
CVE-2026-100689 · GitPython before 3.1.62 Path Traversal via gitmodules path
This page contains facts from public vulnerability sources. Check the original advisory before updating.
GitPython before 3.1.62 does not validate the `path` field read from an untrusted .gitmodules file when updating submodules. While a prior fix (GHSA-hmq2-w58f-27jc) added Submodule._validated_name() to constrain the `name` field, and GitPython's own containment guard Submodule._to_relative_path() is applied in add() and move(), Submodule.update() derives the absolute checkout location from the raw `path` value without that guard. A .gitmodules entry containing directory traversal components (e.g., path = ../../../tmp/escaped) can therefore cause directories to be created via os.makedirs() outside the repository working tree, populated from the submodule URL on the clone path, and removed via shutil.rmtree() when force_remove is used. Exploitation requires an application flow that updates submodules at a non-HEAD commit (such as a historical-commit API); the common clone-then-update flow re-derives the path from a canonical tree lookup and is not affected. The issue is fixed in GitPython 3.1.62.
CVSS 8.7 · High · EPSS 0.4% · Fix available
- Published
- Updated
Affected products and versions
gitpython
- Versions
- ≥ 0, < 3.1.62: Affected (semver)
- 3.1.62: Not affected (semver)
Update to 3.1.62
python-git Debian:12
- Versions
- 3.1.30-1
- 3.1.30-1+deb12u2
- 3.1.36-1
- 3.1.37-1
- 3.1.37-2
- 3.1.37-3
- 3.1.44-1
- 3.1.45-1
- 3.1.46-1
- 3.1.50-1
- 3.1.61-1
- 3.1.62-1
- 3.1.62-2
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
python-git Debian:13
- Versions
- 3.1.44-1
- 3.1.45-1
- 3.1.46-1
- 3.1.50-1
- 3.1.61-1
- 3.1.62-1
- 3.1.62-2
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
python-git Debian:14
- Versions
- 3.1.44-1
- 3.1.45-1
- 3.1.46-1
- 3.1.50-1
- 3.1.61-1
- Affected ranges
- ECOSYSTEM: < 3.1.62-1
Update to 3.1.62-1
gitpython PyPI
- Versions
- 0.1.7
- 0.2.0-beta1
- 0.3.0-beta1
- 0.3.0-beta2
- 0.3.1-beta2
- 0.3.2
- 0.3.2.1
- 0.3.2.RC1
- 0.3.3
- 0.3.4
- 0.3.5
- 0.3.6
- 0.3.7
- 1.0.0
- 1.0.1
- 1.0.2
- 2.0.0
- 2.0.1
- 2.0.2
- 2.0.3
- 2.0.4
- 2.0.5
- 2.0.6
- 2.0.7
- 2.0.8
- 2.0.9
- 2.0.9.dev0
- 2.0.9.dev1
- 2.1.0
- 2.1.1
- 2.1.10
- 2.1.11
- 2.1.12
- 2.1.13
- 2.1.14
- 2.1.15
- 2.1.2
- 2.1.3
- 2.1.4
- 2.1.5
- 2.1.6
- 2.1.7
- 2.1.8
- 2.1.9
- 3.0.0
- 3.0.1
- 3.0.2
- 3.0.3
- 3.0.4
- 3.0.5
- 3.0.6
- 3.0.7
- 3.0.8
- 3.0.9
- 3.1.0
- 3.1.1
- 3.1.10
- 3.1.11
- 3.1.12
- 3.1.13
- 3.1.14
- 3.1.15
- 3.1.16
- 3.1.17
- 3.1.18
- 3.1.19
- 3.1.2
- 3.1.20
- 3.1.22
- 3.1.23
- 3.1.24
- 3.1.25
- 3.1.26
- 3.1.27
- 3.1.28
- 3.1.29
- 3.1.3
- 3.1.30
- 3.1.31
- 3.1.32
- 3.1.33
- 3.1.34
- 3.1.35
- 3.1.36
- 3.1.37
- 3.1.38
- 3.1.4
- 3.1.40
- 3.1.41
- 3.1.42
- 3.1.43
- 3.1.44
- 3.1.45
- 3.1.46
- 3.1.47
- 3.1.48
- 3.1.49
- 3.1.5
- 3.1.50
- 3.1.51
- 3.1.52
- 3.1.53
- 3.1.54
- 3.1.55
- 3.1.56
- 3.1.57
- 3.1.58
- 3.1.59
- 3.1.6
- 3.1.60
- 3.1.61
- 3.1.7
- 3.1.8
- 3.1.9
- Affected ranges
- ECOSYSTEM: < 3.1.62
Update to 3.1.62
python-git Ubuntu:Pro:14.04:LTS
- Versions
- 0.3.2~RC1-2
- 0.3.2~RC1-3
- 0.3.2~RC1-3ubuntu0.1~esm1
- 0.3.2~RC1-3ubuntu0.1~esm2
- 0.3.2~RC1-3ubuntu0.1~esm3
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
python-git Ubuntu:Pro:16.04:LTS
- Versions
- 1.0.1+git137-gc8b8379-1
- 1.0.1+git137-gc8b8379-2
- 1.0.1+git137-gc8b8379-2.1
- 1.0.1+git137-gc8b8379-2.1ubuntu0.1~esm1
- 1.0.1+git137-gc8b8379-2.1ubuntu0.1~esm2
- 1.0.1+git137-gc8b8379-2.1ubuntu0.1~esm4
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
python-git Ubuntu:Pro:18.04:LTS
- Versions
- 2.1.5-1
- 2.1.6-1
- 2.1.7-1
- 2.1.8-1
- 2.1.8-1ubuntu0.1~esm1
- 2.1.8-1ubuntu0.1~esm2
- 2.1.8-1ubuntu0.1~esm4
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
python-git Ubuntu:Pro:20.04:LTS
- Versions
- 2.1.11-1
- 3.0.4-1
- 3.0.5-1
- 3.0.7-1
- 3.0.7-1ubuntu0.1~esm1
- 3.0.7-1ubuntu0.1~esm2
- 3.0.7-1ubuntu0.1~esm4
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
python-git Ubuntu:Pro:22.04:LTS
- Versions
- 3.1.14-1
- 3.1.23-1
- 3.1.24-1
- 3.1.24-1ubuntu0.1~esm1
- 3.1.24-1ubuntu0.1~esm2
- 3.1.24-1ubuntu0.1~esm3
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
python-git Ubuntu:Pro:24.04:LTS
- Versions
- 3.1.30-1
- 3.1.37-1
- 3.1.37-3
- 3.1.37-3ubuntu0.1~esm2
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
python-git Ubuntu:26.10
- Versions
- 3.1.46-1
- 3.1.50-1
- 3.1.61-1
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
python-git Ubuntu:Pro:26.04:LTS
- Versions
- 3.1.44-1
- 3.1.45-1
- 3.1.46-1
- 3.1.46-1ubuntu0.1~esm1
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published