CVE-2026-110860: GitPython symlink following in Submodule.move()

CVE-2026-110860 · Severity: medium · CVSS 6.1 · Published 2026-10-14

GitPython is a Python library used by applications to programmatically interact with Git repositories. A flaw in the Submodule.move() function allows an attacker who controls a Git repository to place a symbolic link that redirects submodule operations outside the intended repository directory. This can corrupt the repository's index and configuration files, disrupting application functionality.

Technologies: GitPython Developers GitPython, gitpython (PyPI). Vendors: GitPython Developers, PyPI.

Quick answers

Is CVE-2026-110860 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-110860 being exploited in the wild.
How severe is CVE-2026-110860?
Medium severity, with a CVSS score of 6.1, published 14 October 2026.
Which products and versions are affected?
GitPython Developers GitPython 3.1.62 before 3.2.0; gitpython (PyPI) ECOSYSTEM:introduced=0,fixed=3.2.0.
Is there a fix for CVE-2026-110860?
Yes. gitpython (PyPI): upgrade to 3.2.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-110860 attacked?
It is attacked with local access, in a software library.
Am I affected by CVE-2026-110860?
Check whether you run GitPython Developers 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.0 or later
    pip install "gitpython>=3.2.0"

Technical details

The Submodule.move() API performs only lexical (name-based) validation of the destination path and does not resolve or reject symbolic links in intermediate path components. An attacker can commit a symbolic link at a location an application will move a submodule into, causing GitPython to follow the link and place checkout content outside the worktree. The vulnerability requires the application to call move() explicitly with a submodule path below an attacker-committed symlink; normal clone or submodule update does not trigger it.

Affected products

  • GitPython Developers GitPython 3.1.62 before 3.2.0

Identifiers

  • CVE-2026-110860
  • GHSA-gq48-pqfc-9p58

Timeline

  • 2026-09-30: disclosed
  • 2026-10-14: advisory

References

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