CVE-2026-42284
CVE-2026-42284 · GitPython: Unsafe option check validates multi_options before shlex.split transforms it
This page contains facts from public vulnerability sources. Check the original advisory before updating.
GitPython is a python library used to interact with Git repositories. Prior to version 3.1.47, _clone() validates multi_options as the original list, then executes shlex.split(" ".join(multi_options)). A string like "--branch main --config core.hooksPath=/x" passes validation (starts with --branch), but after split becomes ["--branch", "main", "--config", "core.hooksPath=/x"]. Git applies the config and executes attacker hooks during clone. This issue has been patched in version 3.1.47.
CVSS 8.1 · High · EPSS 0.7% · Fix available
- Published
- Updated
Affected products and versions
gitpython
- Versions
- < 3.1.47: Affected
No fix published
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
- Affected ranges
- ECOSYSTEM: < 3.1.50-1
Update to 3.1.50-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.5
- 3.1.6
- 3.1.7
- 3.1.8
- 3.1.9
- Affected ranges
- ECOSYSTEM: < 3.1.47
Update to 3.1.47
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
- Affected ranges
- ECOSYSTEM: < 3.0.7-1ubuntu0.1~esm4
Update to 3.0.7-1ubuntu0.1~esm4
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
- Affected ranges
- ECOSYSTEM: < 3.1.24-1ubuntu0.1~esm3
Update to 3.1.24-1ubuntu0.1~esm3
python-git Ubuntu:Pro:24.04:LTS
- Versions
- 3.1.30-1
- 3.1.37-1
- 3.1.37-3
- Affected ranges
- ECOSYSTEM: < 3.1.37-3ubuntu0.1~esm2
Update to 3.1.37-3ubuntu0.1~esm2
python-git Ubuntu:25.10
- Versions
- 3.1.44-1
- 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
- Affected ranges
- ECOSYSTEM: < 3.1.46-1ubuntu0.1~esm1
Update to 3.1.46-1ubuntu0.1~esm1