CVE-2026-114145

Source
https://cve.org/CVERecord?id=CVE-2026-114145
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-114145.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-114145
Aliases
Downstream
CGA (15)
DEBIAN (1)
ECHO (1)
UBUNTU (1)
Published
2026-10-21T20:35:06Z
Modified
2026-10-22T10:46:05Z
Severity
  • 7.5 (High) CVSS_V3 - CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H CVSS Calculator
Summary
GitPython validates a submodule's ".git" path only after cloning into it (RCE)
Details

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.

Database specific
{
    "cna_assigner":  "GitHub_M",
    "cwe_ids":  [
        "CWE-696"
    ],
    "osv_generated_from":  "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/114xxx/CVE-2026-114145.json"
}
References

Affected packages

Git / github.com/gitpython-developers/gitpython

Affected ranges

Type
GIT
Repo
https://github.com/gitpython-developers/gitpython
Events
Introduced
0 Unknown introduced commit / All previous commits are affected
Fixed
Fixed
Database specific
Show details
{
    "extracted_events":  [
        {
            "range":  [
                {
                    "introduced":  "0"
                },
                {
                    "fixed":  "3.2.1"
                }
            ],
            "source":  "AFFECTED_FIELD",
            "strategy":  "StringRangeExpression"
        },
        {
            "range":  [
                {
                    "fixed":  "97eadb888d2f99567e3113f4e455be4ca128f697"
                }
            ],
            "source":  "REFERENCES_COMMIT"
        },
        {
            "original_tag":  "3.2.1",
            "range":  [
                {
                    "fixed":  "c179357b38a8962f1c8e33153ac58b5ac0e6e96a"
                }
            ],
            "source":  "REFERENCES_TAG"
        }
    ]
}

Affected versions

0.*
0.1.4
0.1.4-pre
0.1.5
0.1.6
0.2.0-beta1
0.3.0-beta1
0.3.0-beta2
0.3.1-beta1
0.3.1-beta2
0.3.2
0.3.2-RC1
0.3.2.1
0.3.3
0.3.4
0.3.5
0.3.6
0.3.7
1.*
1.0.0
1.0.1
1.0.2
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.1.0
2.1.1
2.1.10
2.1.11
2.1.12
2.1.13
2.1.2
2.1.3
2.1.4
2.1.5
2.1.6
2.1.8
2.1.9
3.*
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.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.38
3.1.4
3.1.40
3.1.41
3.1.42
3.1.43
3.1.44
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.6
3.1.7
3.1.8
3.1.9
Other
winerr_show

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-114145.json"