cruft · GitPython: TagReference.create positional reference bypasses kwargs-only --file guard, enabling arbitrary file read
Affects cruftSource GCVE Database
Not known to be exploited · CVSS 7.1 High : upgrade to 2.16.0_15 soon.
Data as of 26 Oct 2026, 17:43 UTC
- EPSS
- 0.3% chance of exploitation in 30 days – higher than 24% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
- Patch
- Available – fixed in 2.16.0_15
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:NExploitation evidence
Disclosed: evidence found.
CVE published 25 Aug 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_15.
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 GitPython version 2.16.0_15 that fixes this vulnerability by including positional arguments in the unsafe option guard or by adding a '--' separator before positional arguments in TagReference.create(). Users should upgrade to this fixed version. Until patched, avoid passing user-controlled input as the positional 'reference' argument to TagReference.create().
Description
GitPython's TagReference.create() method improperly handles a positional 'reference' argument, allowing an attacker to bypass unsafe option guards and cause an arbitrary local file read. This occurs because the unsafe option check only inspects keyword arguments, ignoring positional arguments that can inject '--file=<path>' into the git tag command. The file contents are returned in the annotated tag message. This vulnerability affects GitPython versions up to 3.1.58 and is fixed in version 2.16.0_15.
References
- github.com/gitpython-developers/GitPython/security/advisories/GHSA-3wxw-xv34-2frg (opens in a new tab)
- nvd.nist.gov/vuln/detail/CVE-2026-78679 (opens in a new tab)
- github.com/gitpython-developers/GitPython/pull/2208 (opens in a new tab)
- github.com/gitpython-developers/GitPython/commit/1b0d2d9b91575f7db44ef4ff58ac37fc9335e5f6 (opens in a new tab)
- github.com/gitpython-developers/GitPython (opens in a new tab)
- github.com/gitpython-developers/GitPython/releases/tag/3.1.59 (opens in a new tab)
- vulncheck.com/advisories/gitpython-before-arbitrary-file-read-via-tagreference-create (opens in a new tab)