CVE-2026-87817: GitPython · Repository content can impersonate the git directory, leading to arbitrary code execution
Affects nbdimeSource GCVE Database
Not known to be exploited · CVSS 8.7 High : upgrade to 4.0.4_8 soon.
Data as of 26 Oct 2026, 17:28 UTC
- EPSS
- 0.4% chance of exploitation in 30 days – higher than 35% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
- Patch
- Available – fixed in 4.0.4_8
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:NExploitation evidence
Disclosed: evidence found.
CVE published 9 Sep 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 nbdime to 4.0.4_8.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
Homebrewnbdimepkg:brew/nbdimeOther 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 fix is available in GitPython version 4.0.4_8. Users should upgrade to this version or later to remediate the vulnerability. The fix includes reordering the git directory discovery to test the real .git directory first, validating HEAD contents, resolving hook paths via the common_dir, and disabling merge_includes in config reading. Until patched, avoid opening or cloning untrusted repositories with GitPython and performing commits via index.commit().
Description
GitPython version 3.1.59 contains a vulnerability where it incorrectly resolves the git directory path, allowing attacker-controlled repository content to impersonate the .git directory. This misresolution leads to execution of attacker-supplied hooks during a commit operation, arbitrary file reads outside the repository via crafted config files, and potential writes to attacker-chosen locations. The issue arises because GitPython tests certain files before the actual .git directory, causing it to treat the working tree root as the git directory. This flaw affects services that open or clone untrusted repositories using GitPython and perform commits via its native index.commit() method.
References
- github.com/gitpython-developers/GitPython/security/advisories/GHSA-239g-whfq-7xj9 (opens in a new tab)
- nvd.nist.gov/vuln/detail/CVE-2026-87817 (opens in a new tab)
- github.com/gitpython-developers/GitPython/pull/2218 (opens in a new tab)
- github.com/gitpython-developers/GitPython/commit/c7cf4d13b1ed0a2e70f2a1f3c6b4fc6c2652cf0b (opens in a new tab)
- github.com/gitpython-developers/GitPython (opens in a new tab)
- github.com/gitpython-developers/GitPython/releases/tag/3.1.60 (opens in a new tab)
- github.com/pypa/advisory-database/tree/main/vulns/gitpython/PYSEC-2026-3982.yaml (opens in a new tab)
- vulncheck.com/advisories/gitpython-before-3.1.60-remote-code-execution-via-git-directory-impersonation (opens in a new tab)