CVE-2026-87817: GitPython · Repository content can impersonate the git directory, leading to arbitrary code execution
Affects mistral-vibeSource GCVE Database
Not known to be exploited · CVSS 8.7 High : upgrade to 2.26.0 soon.
Data as of 30 Oct 2026, 08:29 UTC
- Patch
- Available – fixed in 2.26.0
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
Weaponized: 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 29 Oct 2026.
What to do
Upgrade mistral-vibe to 2.26.0.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
Homebrewmistral-vibepkg:brew/mistral-vibeOther 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 2.26.0 that corrects the git directory resolution order and validates paths and HEAD contents properly. Users should upgrade to version 2.26.0 or later. The vendor's remediation includes testing for the real .git directory before other candidate paths, resolving hook paths through the correct common_dir, validating HEAD contents, and disabling merge_includes in config readers. No other immediate mitigation is required once patched.
Description
GitPython version 3.1.59 and versions >=2.1.0 <2.26.0 contain a vulnerability where the library incorrectly resolves the git directory path. This allows attacker-controlled repository content to impersonate the .git directory, causing GitPython to treat attacker-controlled files as internal git files, including executable hooks. This leads to arbitrary code execution when the victim performs a commit using GitPython's index.commit() method. Additionally, attackers can read sensitive files outside the repository and write config files to arbitrary locations. The issue arises because GitPython tests for git directory indicators in an order that considers the real .git directory last, allowing tracked files named gitdir, commondir, and HEAD to mislead the resolution. A fix is available in version 2.26.0.
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)