CVE-2026-114145: Cruft · GitPython validates a submodule's ".git" path only after cloning into it (RCE)
Affects cruftSource GCVE Database
Not known to be exploited · CVSS 7.5 High : upgrade to 2.16.0_17 soon.
Data as of 26 Oct 2026, 17:43 UTC
- EPSS
- 0.3% chance of exploitation in 30 days – higher than 28% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
- Patch
- Available – fixed in 2.16.0_17
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:HExploitation evidence
Disclosed: evidence found.
CVE published 21 Oct 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponised: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 26 Oct 2026.
What to do
Upgrade cruft to 2.16.0_17.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
Homebrewcruftpkg:brew/cruftOther threats | Affected
| Fixed in
|
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
AI-suggested
A patch is available in version 2.16.0_17 which fixes the issue by ensuring proper validation before cloning and preventing planting of malicious hooks. Users and applications should upgrade to this fixed version. For versions 3.2.0 and later, although a ValueError is raised on invalid paths, the hook is still planted before the error, so relying on catching this exception is insufficient. Therefore, upgrading to the fixed version is necessary to fully mitigate the risk. Avoid passing untrusted or attacker-influenced paths to create_submodule. No other mitigations are documented.
Description
A vulnerability in the Cruft library's GitPython integration allows an attacker to execute arbitrary code by planting a malicious Git hook. The create_submodule function clones a submodule into the repository's .git directory before validating the path. Specifically, a path like ".git/hooks" is accepted initially, causing the submodule to be cloned directly into the live hooks directory. This results in an attacker-controlled executable hook file (e.g., post-checkout) being placed and executed on subsequent Git operations. Versions 3.1.x silently allow this, while 3.2.0 and later raise a ValueError after cloning, but do not remove the planted hook, so the risk remains. The vulnerability affects versions from 3.1.59 through 3.2.0 plus subsequent commits. A fix is available in version 2.16.0_17.
References
- github.com/gitpython-developers/GitPython/security/advisories/GHSA-83vg-56qc-22m7 (opens in a new tab)
- nvd.nist.gov/vuln/detail/CVE-2026-114145 (opens in a new tab)
- github.com/gitpython-developers/GitPython/pull/2264 (opens in a new tab)
- github.com/gitpython-developers/GitPython/commit/97eadb888d2f99567e3113f4e455be4ca128f697 (opens in a new tab)
- github.com/gitpython-developers/GitPython (opens in a new tab)
- github.com/gitpython-developers/GitPython/releases/tag/3.2.1 (opens in a new tab)