CVE-2026-114145CWE-696

CVE-2026-114145

High · published October 22, 2026

CVSS v3.1
7.5
EPSS
0%
Percentile
17.2
In the wild
Unconfirmed
What it is

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.

The record
Technical detail
CVSS v3.1
7.5 · HIGH
Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00263 · 17.2th percentile
Weakness
CWE-696 · Incorrect Behavior Order
Published
2026-10-22T01:17Z
References (4)
EPSS history
Timeline
  • 23 OCT 03:55Z
    EPSS moved — → 0%
    epss
  • 21 OCT 20:35Z
    GitPython validates a submodule's ".git" path only after cloning into it (RCE)
    cvelistv5
  • 21 OCT 20:35Z
    GitPython validates a submodule's ".git" path only after cloning into it (RCE)
    cvelistv5