Bug 2552968 (CVE-2026-110860)

Summary: CVE-2026-110860 GitPython: GitPython: Arbitrary file relocation via symbolic link traversal in Submodule.move()
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security DevOps Team <prodsec-dev>
Status: NEW --- QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: alinfoot, anthomas, bbrownin, dschmidt, dtrifiro, eglynn, ehelms, gbenhaim, ggainey, ikhan, ilpinto, jdobes, jjoyce, jlanda, jmitchel, jpasqual, jpretori, jschluet, juwatts, kaycoth, kshier, lhh, ltomasbo, mburns, mdellweg, mgarciac, mhulan, niyer, nmoumoul, orabin, osousa, pcreech, rbobbitt, rchan, simaishi, smallamp, stcannon, tmalecek, twaugh, weaton, yguenane, ykashtan
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in GitPython. This vulnerability allows an attacker to write files outside the intended working directory and corrupt repository metadata by tricking an application into processing a crafted repository containing symbolic links. Because the Submodule.move() function validates destination paths only lexically without resolving intermediate symbolic links, moving an initialized submodule can cause GitPython to follow links pointing outside the working tree and relocate submodule checkouts to an arbitrary location.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description OSIDB Bzimport 2026-10-14 23:02:14 UTC
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.