Description
GitPython from 3.1.62 before 3.2.0 contains a symlink-following flaw in Submodule.move(), which checks the destination only lexically and does not reject symbolic links in intermediate path components. An untrusted repository can commit a symlink such as vendor pointing outside the worktree, so an application moving an initialized submodule beneath it relocates the checkout externally and corrupts the index and .gitmodules.
Published: 2026-10-14
Score: 6.9 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Symlink path traversal leading to unauthorized file modifications outside the worktree
Action: Apply patch
AI Analysis

Impact

GitPython versions 3.1.62 through 3.1.x before 3.2.0 contain a flaw in Submodule.move() that checks only the lexical destination and does not reject symbolic links in intermediate components. An untrusted repository can embed a symlink, such as one named vendor, that points outside the worktree. When an application calls Submodule.move(), the library follows that symlink, relocating the checked‑out submodule to the external location and corrupting the repository index and .gitmodules file. This flaw can allow an attacker who controls a commit to write arbitrary content outside the repository, potentially compromising configured infrastructure or application state.

Affected Systems

The vulnerability affects the GitPython project as maintained by the gitpython‑developers. Any deployment of GitPython 3.1.62, 3.1.63, 3.1.64, 3.1.65, 3.1.66, 3.1.67, 3.1.68, 3.1.69, 3.1.70, 3.1.71, 3.1.72, 3.1.73, 3.1.74, 3.1.75, 3.1.76, 3.1.77, 3.1.78, 3.1.79, 3.1.80, 3.1.81, 3.1.82, 3.1.83, 3.1.84, 3.1.85, 3.1.86, 3.1.87, 3.1.88 or 3.1.89 is vulnerable. The fix is included in GitPython 3.2.0 and later.

Risk and Exploitability

The CVSS base score of 6.9 indicates moderate severity. EPSS data is unavailable, so the likelihood of exploitation cannot be quantified, but the vulnerability is not listed in the CISA KEV catalog. Exploitation requires an application that uses Submodule.move() and an untrusted repository that contains a malicious symlink. If an attacker can supply such a repository, they can cause the library to write files outside the intended worktree, corrupting repository configuration and potentially affecting any services that depend on the repository. The impact is confined to the local environment of the application, so privilege escalation or remote code execution is not inherent but may occur if the application runs with elevated privileges or if malicious files are placed in locations that satisfy other vulnerabilities.

Generated by OpenCVE AI on October 15, 2026 at 12:03 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade GitPython to version 3.2.0 or later to remove the symlink traversal flaw.
  • If upgrading is not possible, do not allow Submodule.move() to operate on repositories that originate from untrusted sources; restrict submodule handling to verified repositories only.
  • When Submodule.move() must be used, validate the destination path to ensure it does not contain intermediate symbolic links; reject or resolve any symlinks before performing the move.

Generated by OpenCVE AI on October 15, 2026 at 12:03 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4872-1 python-git security update
History

Mon, 26 Oct 2026 16:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Sat, 17 Oct 2026 14:15:00 +0000

Type Values Removed Values Added
First Time appeared Gitpython-developers
Gitpython-developers gitpython
Vendors & Products Gitpython-developers
Gitpython-developers gitpython

Thu, 15 Oct 2026 13:30:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Moderate


Wed, 14 Oct 2026 23:00:00 +0000

Type Values Removed Values Added
Description GitPython from 3.1.62 before 3.2.0 contains a symlink-following flaw in Submodule.move(), which checks the destination only lexically and does not reject symbolic links in intermediate path components. An untrusted repository can commit a symlink such as vendor pointing outside the worktree, so an application moving an initialized submodule beneath it relocates the checkout externally and corrupts the index and .gitmodules.
Title GitPython 3.1.62 before 3.2.0 Symlink Path Traversal via Submodule.move()
First Time appeared Gitpython Project
Gitpython Project gitpython
Weaknesses CWE-59
CPEs cpe:2.3:a:gitpython_project:gitpython:*:*:*:*:*:*:*:*
Vendors & Products Gitpython Project
Gitpython Project gitpython
References
Metrics cvssV3_1

{'score': 6.1, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L'}

cvssV4_0

{'score': 6.9, 'vector': 'CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N'}


Subscriptions

Gitpython-developers Gitpython
Gitpython Project Gitpython
cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-10-26T15:27:14.246Z

Reserved: 2026-10-14T22:18:33.239Z

Link: CVE-2026-110860

cve-icon Vulnrichment

Updated: 2026-10-26T15:26:36.134Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-14T23:17:27.340

Modified: 2026-10-26T16:17:11.703

Link: CVE-2026-110860

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-14T22:52:44Z

Links: CVE-2026-110860 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-17T14:00:09Z

Weaknesses
  • CWE-59

    Improper Link Resolution Before File Access ('Link Following')