Skip to content
vulnpost
Tech and security news that matters
Vulnerabilities

GitPython Argument Injection in Head.checkout() Allows Arbitrary File Read Before 3.2.0

Versions of the GitPython library prior to 3.2.0 contain a high-severity argument injection flaw that lets attackers read local files via malicious branch names.

Illustration: A tangled bundle of colored threads represents the git version control system.
AI-generated illustration: Vuln Post

Key points

  • The National Vulnerability Database rates CVE-2026-110859 as high severity with a CVSS score of 8.7.
  • The flaw allows remote attackers to read arbitrary files by supplying a branch name parsed as a git option.
  • GitPython versions before 3.2.0 are affected; no patch status is confirmed in the source material.

Security teams managing Python environments must assess exposure to CVE-2026-110859, a high-severity vulnerability in the GitPython library. The National Vulnerability Database assigns this issue a CVSS score of 8.7, indicating significant risk. The flaw exists in all versions of GitPython prior to 3.2.0. It stems from an argument injection weakness in the Head.checkout() function. This defect allows remote attackers to read arbitrary files on the system. This publication previously reported on supply chain risks, such as the Wazuh vulnerability detailed on 2026-10-13.

In plain English

The vulnerability arises when applications using GitPython clone a repository and check out its active branch. Attackers can host a malicious repository with a default branch name that looks like a command option. Specifically, naming a branch "--pathspec-from-file=<path>" tricks the library into treating the name as a git argument. This causes the application to read the specified file and leak its contents through GitCommandError messages. The issue is classified under CWE-88, which covers improper neutralization of arguments.

The background

The National Vulnerability Database record identifies the affected component as gitpython-developers GitPython. The description specifies that the flaw allows remote attackers to read arbitrary files. This occurs because the branch name is parsed as a git option rather than a simple string. The mechanism relies on the application automatically checking out the default branch after cloning. If the branch name contains the injection payload, the local system exposes file contents to the attacker.

What changes now

Organizations should immediately inventory applications using GitPython to determine if they run versions before 3.2.0. The source material does not confirm whether a patch or update has been released yet. Until a fix is confirmed, teams must evaluate the risk of cloning untrusted repositories. Applications that automatically check out branches from external sources are most at risk. Security operations should monitor for unusual GitCommandError messages that might indicate exploitation attempts.

Who needs to act first

Teams usually prioritize systems that interact with untrusted external repositories. Check whether your applications automatically clone and check out branches from user-supplied URLs. If so, these systems face the highest exposure. Begin by isolating these environments from production networks to limit potential data leakage. Test any potential mitigations in a staging area before wider deployment. Back up critical configuration files and logs to ensure you can restore state if exploitation occurs. Reduce exposure by restricting which repositories your applications can access.

Background: Supply chain attacks

Supply chain attacks compromise trusted software or hardware before it reaches you. Attackers inject malicious code into updates or dependencies, allowing them to enter your network through legitimate channels. You must verify digital signatures and limit privileges to stop this silent infiltration.

Read the full guide: Supply Chain Attacks: How Compromised Dependencies Breach Your Network

What to do and how to stay safe: GitPython

  • Audit all Python projects using GitPython to identify versions prior to 3.2.0 and remove them if possible.
  • Monitor application logs for GitCommandError messages containing unexpected file paths or sensitive data.
  • Restrict cloning operations to trusted, internal repositories until a vendor update is confirmed.
  • Review access controls to ensure that even if files are read, the exposure is limited to non-sensitive data.

Step-by-step guide: 7 Configuration Errors That Expose Systems to Zero-Day Exploits

General security guidance from the Vuln Post newsroom. It is not confirmed advice from the organisations named in this story.

Frequently asked questions

What is the CVSS score for CVE-2026-110859?

The National Vulnerability Database rates the vulnerability as high severity with a CVSS score of 8.7.

Which versions of GitPython are affected?

All versions of GitPython before 3.2.0 are affected by this argument injection vulnerability.

How do attackers exploit this flaw?

Attackers host a repository with a default branch named "--pathspec-from-file=<path>" to read arbitrary files.

Sources

  1. CVE Program
GitPythonCVE-2026-110859argument injectionPythonNVD

Related stories

virtualenv 21.14.1 fixes high-severity code execution in Fish shell activation

A flaw in virtualenv allows arbitrary code execution when activating environments in Fish shell due to improper quote handling. Version 21.14.2 patches the issue.