CVE-2026-87817
CVE-2026-87817 · GitPython before 3.1.60 Remote Code Execution via Git Directory Impersonation
This page contains facts from public vulnerability sources. Check the original advisory before updating.
GitPython before 3.1.60 fails to properly validate the git directory location, allowing attackers to impersonate the git directory using tracked files like gitdir, commondir, and HEAD. Attackers can execute arbitrary code by placing a malicious pre-commit hook in the tracked hooks directory that executes when a victim calls index.commit() on a cloned or opened repository.
CVSS 8.7 · High · EPSS 0.4% · Public exploit · Fix available
- Published
- Updated
Affected products and versions
gitpython
- Versions
- ≥ 0, < 3.1.60: Affected (semver)
- 3.1.60: Not affected (semver)
Update to 3.1.60
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
- Affected ranges
- ECOSYSTEM: < 3.1.61-1
Update to 3.1.61-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.7
- 3.1.8
- 3.1.9
- Affected ranges
- ECOSYSTEM: < 3.1.60
Update to 3.1.60
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: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