Skip to main content

GitPython CVE-2026-110857

| EUVDEUVD-2026-101740 HIGH
Improper Validation of Specified Type of Input (CWE-1287)
2026-10-14 disclosure@vulncheck.com GHSA-jj45-mj3g-556c
7.7
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify app passing user URLs to GitPython
  2. Delivery
    Submit crafted ext:: remote-helper URL
  3. Exploit
    ls_remote bypasses check_unsafe_protocols
  4. Execution
    Git invokes ext transport helper
  5. Impact
    Execute arbitrary command on host

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Specified type validation
Exploitation Conditions

Exploitation requires a consuming application to pass an attacker-controlled remote URL into GitPython's Git.ls_remote (or the similarly unguarded merge_base and IndexFile.move option-injection paths). The decisive prerequisite is that the underlying Git permits the ext transport (protocol.ext.allow), which modern Git disables by default - so the attack succeeds mainly where this has been relaxed or where the application passes untrusted URLs in a context Git treats as user-initiated. Limiting factors: attacker cannot exploit without the application accepting external URLs (UI:P / AT:P), the ext helper must be allowed by Git config, and the flaw is fixed in GitPython 3.2.0. Not exploitable against a default Git configuration that blocks the ext protocol.

Impact

This is a moderate-to-serious priority driven by impact rather than ease of exploitation. The CVSS 4.0 vector (AV:N, AC:H, AT:P, PR:N, UI:P, VC:H/VI:H/VA:H) scores 7.7 and shows that while no authentication is required and full triad impact is achievable (code execution), exploitation is gated by High attack complexity, a Present attack requirement (AT:P), and passive user/application interaction (UI:P). The critical real-world limiter is that the ext:: remote-helper transport must be permitted by Git - modern Git disables this by default (protocol.ext.allow=user), so default-configured environments are not exploitable without a non-default setting or an application that explicitly enables it. No EPSS score, CISA KEV listing, or public POC is present in the provided data, so there is no evidence of active exploitation; exploitation status is 'no public exploit identified at time of analysis.' The signals are internally consistent - high technical impact but constrained prerequisites - meaning this should be patched on a normal-to-expedited cadence rather than treated as an emergency, with priority raised for any deployment that passes untrusted URLs into GitPython or has relaxed Git protocol settings. The CWE-1287 (improper input validation) classification aligns with the root cause: Git.ls_remote forwarding URLs without check_unsafe_protocols validation.

Exploit ScenarioDerived

An application using GitPython (e.g., a CI/CD runner, repo-indexing service, or web app) accepts a remote repository URL from an untrusted user and passes it to Git.ls_remote (or merge_base / IndexFile.move). The attacker submits an 'ext::sh -c <command>' style URL; because ls_remote skips check_unsafe_protocols validation, GitPython hands it to Git, which executes the attacker's command if the ext transport is permitted. No public exploit code is identified at time of analysis, but the technique is well-understood and the attack requires the victim application to process the malicious URL (UI:P).

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 14, 2026

Remote code execution in GitPython releases before 3.2.0 (CVE-2026-110857) allows unauthenticated attackers to execute arbitrary commands through Git.ls_remote, which forwards a caller-supplied remote URL without the check_unsafe_protocols validation that normally blocks dangerous transports, notably ext:: remote-helper URLs when Git's protocol.ext.allow setting permits them. Exploitation is conditional rather than trivial: a consuming application must pass an attacker-controlled URL into the affected API (user interaction is required per the assessed CVSS:3.1 vector AV:N/AC:H/PR:N/UI:R), and a default Git configuration that rejects the ext transport blocks the primary ls_remote path, while the related merge_base and IndexFile.move option-injection paths remain similarly unguarded. No public exploit identified at time of analysis; the flaw is fixed in GitPython 3.2.0.

RemediationAI

Upgrade GitPython to 3.2.0 or later, which is the vendor-released patch that restores check_unsafe_protocols validation on Git.ls_remote and closes the related merge_base and IndexFile.move option-injection paths; see the advisory at https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-w8jc-g24h-crhw for details. Until the upgrade can be deployed, confirm that protocol.ext.allow is unset or explicitly denied in every git configuration reachable by the application, since a default Git blocks the ext transport and breaks the primary ls_remote attack path - the trade-off is that this also disables legitimate ext remote helpers some workflows rely on. Additionally, validate and allowlist remote URL schemes (for example https, ssh, and git only) before any value reaches Git.ls_remote, and avoid passing untrusted strings to merge_base or IndexFile.move where a leading "-" could be parsed as an option; the trade-off there is that strict URL allowlisting can break unusual but valid transports such as file:// or custom helpers, so it should be scoped to the code paths that accept external input. Prioritize patching in applications that accept user-submitted repository URLs, and treat such input as untrusted even after upgrading.

Affected VersionsENISA

GitPython 0 <3.2.0

Affected Packages

euvd gitpython fix: 3.2.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

GitPython is a Python library that shells out to the git command-line client, and its safety design leans on a check_unsafe_protocols guard that rejects dangerous remote URL schemes before they reach git. In versions before 3.2.0, Git.ls_remote does not apply that guard, so an attacker-influenced URL reaches git intact; the highest-impact vector is the ext:: remote-helper syntax, which git honors as a command to spawn when the ext transport is permitted (protocol.ext.allow), yielding code execution in the context of the calling process. The root-cause class is CWE-1287 (Improper Validation of Specified Type of Input): the transport/URL type is not validated against an allowlist before use. Two sibling paths compound the problem - merge_base and IndexFile.move accept unguarded option injection, meaning arguments beginning with "-" can be interpreted as git options rather than data. The affected technology stack is Python applications that embed GitPython for repository introspection, cloning, or remote inspection, and the decisive environmental prerequisite is a Git configuration that does not block the ext transport, which modern git disables by default.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (vulncheck) PRIMARY 7.7 HIGH
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

AC:H and UI:R because success needs Git's non-default ext transport enabled and an application that processes an attacker-supplied URL; PR:N as no auth is required, with full C/I/A from command execution.

3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Red Hat 7.5 HIGH

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 15, 2026 - 02:16 EUVD
CVE Published
Oct 14, 2026 - 23:17 cve.org
HIGH 7.7

DescriptionCVE.org

GitPython before 3.2.0 contains a remote code execution vulnerability that allows attackers to run commands because Git.ls_remote forwards URLs without check_unsafe_protocols validation. Attackers can supply ext:: remote-helper URLs to execute commands when git permits the ext transport, while merge_base and IndexFile.move also accept unguarded option injection.

Technical POC Analysis

Note on scoring: the advisory scores this 7.5 with CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

GitPython, a widely used Python library for Git repository interaction, contains a remote code execution vulnerability in versions prior to 3.2.0. Organizations that deploy applications accepting untrusted repository URLs may face arbitrary command execution on host systems, risking data loss, lateral movement, or full system compromise. Security leadership should prioritize remediation given the high severity and potential for significant business disruption.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 66% exploitable
Prevalence
High
widely-used Python Git library across CI/CD, tooling, and automation
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy