CVE-2026-114145: GitPython submodule path traversal to arbitrary hook execution

CVE-2026-114145 · Severity: high · CVSS 7.5 · Published 2026-10-21

GitPython is a Python library that allows applications to interact with Git repositories. A vulnerability in the create_submodule() function allows an attacker to place an executable Git hook (such as a post-checkout hook) in the .git/hooks directory by supplying a malicious submodule path. When a later Git operation is performed, this planted hook executes with the privileges of the user running the Git operation, potentially enabling code execution on the system.

Technologies: gitpython (PyPI). Vendors: PyPI.

Quick answers

Is CVE-2026-114145 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-114145 being exploited in the wild.
How severe is CVE-2026-114145?
High severity, with a CVSS score of 7.5, published 21 October 2026.
Which products and versions are affected?
GitPython contributors GitPython prior to 3.2.1; gitpython (PyPI) <= 3.2.0, ECOSYSTEM:introduced=0,fixed=3.2.1.
Is there a fix for CVE-2026-114145?
Yes. gitpython (PyPI): upgrade to 3.2.1 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-114145 attacked?
It is attacked over the network.
Am I affected by CVE-2026-114145?
Check whether you run GitPython contributors GitPython or gitpython (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • gitpython (PyPI): upgrade to 3.2.1 or later
    pip install "gitpython>=3.2.1"

Technical details

The create_submodule() function in git/objects/submodule/base.py accepts attacker-controlled submodule paths and invokes _clone_repo() before safely validating the destination. In GitPython 3.1.x and affected 3.2.0+ revisions, an attacker can supply a path like .git/hooks as the destination, bypassing containment checks and writing to Git metadata directories. The vulnerability requires an application to accept untrusted submodule paths and a clone destination empty enough for Git to populate, typically when default sample hooks are absent. The fix validates destinations before mutation using portable path validation that prevents NTFS/HFS metadata aliases and invalid paths.

Affected products

  • GitPython contributors GitPython prior to 3.2.1

Identifiers

  • CVE-2026-114145
  • GHSA-83vg-56qc-22m7

Timeline

  • 2026-10-21: disclosed
  • 2026-10-02: patched

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.