Act nowDisclosed

Advisory · CVE-2026-110858

GitPython pull flaw turns a crafted refspec into command execution

GitPython from 3.1.30 before 3.2.0 checks unsafe pull options only in keyword arguments, letting a positional refspec carry an upload-pack option into command execution. CVSS 3.1 8.1, CVSS 4.0 9.2.

Vendor
GitPython
Product
GitPython
Identifier / CWE
CVE-2026-110858
CWE-88
Action timing
Immediate
ELI5

Explain it like I’m five

The guard checks the labelled pockets but not the parcel, so a command option rides through in the parcel.

SIMPLIFIED_ATTACK_PATH04 STEPS
  1. 01Pull called with attacker refspec

    An application calls Remote.pull with a refspec an attacker controls.

  2. 02Guard misses position

    The unsafe-option guard inspects keyword arguments, not the positional refspec.

  3. 03Option smuggled in

    The refspec carries an upload-pack option into the underlying git command.

  4. 04Commands execute

    Operating system commands run as the calling process over local-path or SSH transports.

What happened

The GitHub advisory for GitPython describes command execution in releases from 3.1.30 before 3.2.0 in Remote.pull. Its unsafe-option guard inspects only keyword arguments and not the positional refspec.

An attacker controlling the refspec can supply an upload-pack option and execute operating system commands as the calling process over local-path or SSH transports.

What to do

  1. Inventory applications that call GitPython Remote.pull with user or repository controlled refspecs.
  2. Upgrade GitPython to 3.2.0 or later using the project advisory guidance.
  3. Stop passing untrusted refspecs to pull operations until the upgrade is complete.
  4. Review process and git logs for pull operations containing upload-pack options or unexpected child processes.
  5. Verify the deployed library version and check credentials available to affected processes if abuse is suspected.

Management note

Library RCE flaws matter most where automation pulls from less trusted remotes. Upgrade, then look at what the calling process could reach with its credentials.