p PatchFirst

CVE-2026-114145

CVE-2026-114145 · GitPython validates a submodule's ".git" path only after cloning into it (RCE)

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 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.

CVSS 7.5 · High · EPSS 0.3% · Public exploit · Fix available

Published
Updated

Stack: system · python

Affected products and versions

  • gitpython

    Versions
    • < 3.2.1: 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
    • 3.1.62-3
    • 3.2.1-1
    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
    • 3.1.62-3
    • 3.2.1-1
    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
    • 3.1.62-1
    • 3.1.62-2
    • 3.1.62-3
    • 3.2.1-1
    Affected ranges
    • ECOSYSTEM: (−∞, +∞)

    No fix published

  • 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.62
    • 3.1.7
    • 3.1.8
    • 3.1.9
    • 3.2.0
    Affected ranges
    • ECOSYSTEM: < 3.2.1

    Update to 3.2.1

  • 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

Original sources

Check your server →