Symlink following in GitPython Submodule.move() escapes worktree
Key facts
- Attack vector
- Local
- Privileges required
- None
- User interaction
- Passive
- Attack complexity
- Low
- Attack requirements
- None
- Impact type
- —
- Confidentiality · integrity · availability
- None · High · Low
- Fix status
- Partial Red Hat: 9 without a fix
Attack profile from CVSS 4.0 · CNA. Fix status from CNA and Red Hat.
Summary
GitPython from 3.1.62 before 3.2.0 has a symlink-following flaw in Submodule.move() (CWE-59). The method checks the destination only lexically and does not reject symbolic links in intermediate path components. An untrusted repository can commit a symlink pointing outside the worktree, so moving an initialized submodule beneath it relocates the checkout externally and corrupts the index and .gitmodules.
Written with Claude Haiku 5.5 from the sources below · 2026-11-06
Description from the CNA
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.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| gitpython-developers | GitPython | 3.1.62 to before 3.2.0 | 3.2.0 | Patch available | CNA |
- GitPython Vendorgitpython-developers Affected 3.1.62 to before 3.2.0 Fixed in 3.2.0 Patch available CNA
CPE names Threatist (inferred) · 1
Inferred from how NVD named this product before; not given by a source.
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:gitpython_project:gitpython:*:*:*:*:*:*:*:* | — | — | gitpython-developers |
- cpe:2.3:a:gitpython_project:gitpython:*:*:*:*:*:*:*:* Versions — — ·gitpython-developers
Remediation
Upgrade GitPython to 3.2.0. Red Hat lists no fix planned for Exploit Intelligence, Red Hat OpenStack Platform 13 (Queens), Red Hat OpenStack Platform 16.2 and Red Hat OpenStack Platform 17.1, and no fix available for Red Hat AI Inference Server, Red Hat Ansible Automation Platform 2, Red Hat Enterprise Linux AI (RHEL AI) 3, Red Hat OpenShift AI (RHOAI) and Red Hat Satellite 6.
Written with Claude Haiku 5.5 from the sources below · 2026-11-06
- Fix · CNA GitPython (gitpython-developers) Fixed in 3.2.0
Fixed in the same release
Records fixed by the same vendor advisory or release, as the CNA lists them.
- Release ·
gitpython-developers GitPython 3.2.0
6 records Highest priority Priority HIGH 2 HIGH, 3 MEDIUM, 1 LOW
Other records, highest priority first
- TI-2026-74549 Argument injection in GitPython Head.checkout() leaks arbitrary filesPriority HIGH 77
- TI-2026-74546 Regular expression denial of service in GitPython author parsingPriority HIGH 77
- TI-2026-74545 GitPython expands environment variables in submodule namesPriority MEDIUM 64
Vendor assessments
Red Hat
Red Hat rating: Moderate. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Exploit Intelligence | Affected | No fix planned: Out of support scope |
| Red Hat AI Inference Server | Affected | No fix yet: Fix deferred |
| Red Hat Ansible Automation Platform 2 | Affected | No fix yet: Fix deferred |
| Red Hat Enterprise Linux AI (RHEL AI) 3 | Affected | No fix yet: Fix deferred |
| Red Hat OpenShift AI (RHOAI) | Affected | No fix yet: Fix deferred |
| Red Hat OpenStack Platform 13 (Queens) | Affected | No fix planned: Out of support scope |
| Red Hat OpenStack Platform 16.2 | Affected | No fix planned: Out of support scope |
| Red Hat OpenStack Platform 17.1 | Affected | No fix planned: Out of support scope |
| Red Hat Satellite 6 | Affected | No fix yet: Fix deferred |
Timeline
- 2026-10-15 Threatist record created from CVE-2026-110860
- 2026-10-16 Priority changed: MEDIUM → LOW
- 2026-10-16 Affected versions changed · Red Hat
- 2026-10-16 CVSS score added · Red Hat
- 2026-10-26 CISA SSVC decision points changed
- 2026-10-26 Priority changed: LOW → MEDIUM
References
More gitpython-developers vulnerabilities
- TI-2026-74549 Argument injection in GitPython Head.checkout() leaks arbitrary files CVSS 4.0HIGH 8.7
- TI-2026-74546 Regular expression denial of service in GitPython author parsing CVSS 4.0HIGH 8.7
- TI-2026-54689 GitPython before 3.1.59 Path Traversal via separate-git-dir CVSS 4.0HIGH 8.7
- TI-2026-51706 GitPython before 3.1.55 Environment Variable Exfiltration via Remote.add() CVSS 4.0HIGH 8.7
- TI-2026-47618 GitPython before 3.1.52 Environment Variable Exfiltration via clone_from CVSS 4.0HIGH 8.7
- TI-2026-30595 GitPython: Unsafe option check validates multi_options before shlex.split transforms it CVSS 3.1CRITICAL 9.8
Sources
- CVE-2026-110860 · CVE Program
- CVE-2026-110860 · NVD
- FIRST EPSS
- CVE-2026-110860 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences