cruft · GitPython: Arbitrary local file content disclosure via [include] directive in untrusted .gitmodules
Affects cruftSource GCVE Database
Not known to be exploited · CVSS 8.6 High : upgrade to 2.16.0_15 soon.
Data as of 26 Oct 2026, 17:43 UTC
- EPSS
- 0.1% chance of exploitation in 30 days – higher than 7% 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:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/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
Upgrade GitPython to version 2.16.0_15 or later, where the issue is fixed by disabling merge_includes in SubmoduleConfigParser. Until then, avoid processing untrusted repositories with GitPython or patch the library to disable merge_includes in Submodule._config_parser().
Description
GitPython versions from 2.9.0 up to but not including 2.16.0_15 contain a vulnerability where the SubmoduleConfigParser used to parse the .gitmodules file follows [include] directives without restricting file paths. This allows an attacker controlling the .gitmodules file to cause the parser to read arbitrary local files. When such a file lacks git-config section headers, the resulting exception message leaks the first line of the file, leading to local file content disclosure. The issue arises because merge_includes is enabled by default in SubmoduleConfigParser, unlike other config parsers hardened against this risk. A fix is available in version 2.16.0_15.
References
- github.com/gitpython-developers/GitPython/security/advisories/GHSA-7833-fr7j-v32q (opens in a new tab)
- nvd.nist.gov/vuln/detail/CVE-2026-78675 (opens in a new tab)
- github.com/gitpython-developers/GitPython/pull/2211 (opens in a new tab)
- github.com/gitpython-developers/GitPython/commit/ef7568e3b317ce617eacda39b8b54dcdff8c3b5c (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)
- github.com/pypa/advisory-database/tree/main/vulns/gitpython/PYSEC-2026-3785.yaml (opens in a new tab)
- vulncheck.com/advisories/gitpython-before-local-file-content-disclosure-via-gitmodules (opens in a new tab)