Skip to main content

simple-git EUVDEUVD-2026-89336

| CVE-2026-102829 CRITICAL
OS Command Injection (CWE-78)
2026-09-29 security-advisories@github.com GHSA-v5rq-49vh-5v5c
9.2
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Attacker supplies malicious VISUAL env value
  2. Delivery
    App forwards env into simple-git call
  3. Exploit
    parseEnv fails to flag VISUAL as unsafe editor
  4. Execution
    Git invokes attacker command during commit-amend/rebase
  5. Impact
    Arbitrary code runs as Node.js process

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK

2 techniques across 1 tactic: Execution

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

Exploitation Conditions

Exploitation requires ALL of: (1) a consuming Node.js application that forwards attacker-influenced environment values into simple-git's environment (e.g., via .env()); (2) the attacker able to set the VISUAL environment variable; (3) NO higher-priority editor setting overriding it (GIT_EDITOR, core.editor, or EDITOR unset/lower priority); (4) a Git operation that actually invokes an editor - commit amendment or interactive rebase; and (5) Git's terminal prerequisites being met. Limiting factors: this is a library flaw, so it is only reachable if the wrapping application unsafely propagates untrusted environment input; the VISUAL variable must not be shadowed by a higher-priority editor setting; and only editor-launching Git subcommands trigger it. These conditions correspond to the vendor's AC:H and AT:P metrics. Affected: simple-git / @simple-git/argv-parser prior to 2.0.1.

Impact

This is a real, high-value supply-chain risk but with meaningful preconditions that temper the raw 9.2 score. The CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H) correctly encodes full unauthenticated code execution impact while flagging the difficulty: AC:H and AT:P (attack requirements present) reflect that exploitation is not turnkey - it depends on the CONSUMING application forwarding attacker-influenced environment values into simple-git and performing an editor-invoking Git operation. No EPSS score and no KEV entry were provided, so there is no evidence of active exploitation or a computed exploitation probability. A functional proof-of-concept effectively exists: the fix commit adds an integration test (git-env.spec.ts) that sets VISUAL: 'touch <file>' and runs commit --amend, demonstrating the pre-patch bypass concretely. CWE-78 (OS command injection) plus the vendor GHSA advisory and merged fix (PR #1201, argv-parser 2.0.1) confirm this as genuine arbitrary command execution, not a theoretical issue. Net assessment: prioritize patching because simple-git is extremely widely deployed and the impact is code execution, but note the exploit is CONDITIONAL on how the downstream application handles environment variables - it is not blanket remote exploitation of every simple-git install. Missing data: no independent EPSS/KEV signal to gauge in-the-wild activity.

Exploit ScenarioDerived

A Node.js application (e.g., a CI runner, git-automation service, or hosting backend) uses simple-git and forwards user- or request-influenced environment values into Git operations. An attacker sets the VISUAL environment variable to a shell command (e.g., touch /tmp/pwned or a reverse shell) which the pre-2.0.1 argv-parser fails to recognize as an unsafe-editor key, so Git launches it as the editor during a commit --amend or interactive rebase, executing the command with the Node.js process's privileges. A proof-of-concept demonstrating the bypass is embedded in the vendor's fix commit as an integration test.

Act Now Prioritize within 24-48h. Why: CRITICAL severity + public POC available.
1 public PoC Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 29, 2026

Command injection in simple-git and its @simple-git/argv-parser package prior to 2.0.1 lets an attacker who can influence environment values forwarded by a consuming Node.js application cause Git to launch an attacker-selected editor executable, which runs with the privileges of the Node.js process. The root cause is that parseEnv's GitEnvKeys allowlist omits VISUAL, so prepareEnv silently drops the key before vulnerabilityCheck can classify it as allowUnsafeEditor, letting the value pass through to Git during editor-invoking operations such as commit amendment or interactive rebase. Exploitation requires the wrapping application to unsafely propagate untrusted environment input, the attacker to control VISUAL, and no higher-priority editor setting (GIT_EDITOR, core.editor, or a higher-priority EDITOR) to shadow it, which is why the assessed vector carries AC:H and AT:P despite the high 9.2 CVSS 4.0 base - no public exploit identified at time of analysis, and the flaw is fixed in argv-parser 2.0.1.

RemediationAI

Upgrade to @simple-git/argv-parser 2.0.1 (and the matching simple-git patch release) - this is the vendor-released fix that adds VISUAL to GitEnvKeys so it is classified as allowUnsafeEditor and refused; details are in the GHSA-v5rq-49vh-5v5c advisory and the @simple-git/argv-parser@2.0.1 release tag, with the code change in commit 68874c2/PR 1201. Note that because simple-git is a transitive library, a top-level version bump alone is insufficient - verify via lockfile that the resolved @simple-git/argv-parser is at least 2.0.1, and pin or override it if the parent package still requests an older range. Until upgrades land, compensating controls with defined trade-offs are: strip or hard-deny VISUAL (and other editor-controlling keys such as GIT_EDITOR, GIT_SEQUENCE_EDITOR, EDITOR) from any environment object passed into simple-git, accepting that legitimate callers relying on custom editors will break; build the child environment from an explicit allowlist of known-safe variables rather than forwarding the whole process env, which may silently drop variables other tooling depends on; set a trusted GIT_EDITOR or core.editor value (for example true or a fixed path) so it outranks a surviving VISUAL, with the caveat that this only holds while the override remains in place and the attacker cannot also control that variable; avoid editor-invoking Git flows entirely by passing --no-edit to commit amendment and GIT_SEQUENCE_EDITOR=true for rebases, which removes the trigger but constrains interactive workflows; and treat third-party .env files or configuration as untrusted input so they are never merged verbatim into the Git process environment. Absence of a public exploit is not a reason to defer patching, given the supply-chain reach of simple-git and the absence of any upstream-issued mitigation beyond the version fix.

Affected VersionsENISA

git-js < 2.0.1

Affected Packages

npm @simple-git/argv-parser fix: 2.0.1
euvd git_js fix: 2.0.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm, euvd

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 widely used Node.js library that wraps the git CLI so applications can run Git operations from JavaScript; @simple-git/argv-parser is its bundled argument/environment parser. Before Git executes, the parser's parseEnv builds a mapping of Git-aware environment variables (GitEnvKeys) that are subsequently validated by a vulnerabilityCheck routine, which can flag dangerous keys such as those allowing an unsafe editor via an allowUnsafeEditor classification. Because VISUAL was absent from GitEnvKeys, prepareEnv discarded the key during normalization instead of classifying it, so the check never fired and the raw value survived into the environment handed to the Git child process. Git's editor resolution prefers GIT_EDITOR, then core.editor, then VISUAL, then EDITOR, so a surviving VISUAL value is honored by subordinate commands that spawn an editor (for example git commit --amend or an interactive rebase). This is OS command injection (CWE-78): the value is not merely a path but can be an arbitrary shell command line (the upstream regression test uses VISUAL="touch <path>"), and the spawned process inherits the privileges of the Node.js process. The GitHub advisory GHSA-v5rq-49vh-5v5c, commit 68874c239f0c7a87f4a68c3d2c4a0d7c75bb27f4 and PR 1201 add 'visual' to GitEnvKeys as allowUnsafeEditor, and the added integration test git-env.spec.ts asserts that VISUAL is blocked by default, confirming both the attack pattern and the fix. The vendor's CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H with no subsequent-system impact) and the independent CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H) agree that the impact is confined to the host running the vulnerable library.

Know when Node.js 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 (github) PRIMARY 9.2 CRITICAL
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 8.1 HIGH

Untrusted input can reach the process remotely (AV:N/PR:N/UI:N), but multiple preconditions - env forwarding, no editor override, editor-invoking operation - make it AC:H; successful abuse yields full command execution (C/I/A:H).

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

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
High
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

2
Patch available
Sep 29, 2026 - 20:04 EUVD
CVE Published
Sep 29, 2026 - 19:17 cve.org
CRITICAL 9.2

DescriptionCVE.org

simple-git, an interface for running git commands in any node.js application, enables applications to execute Git operations from JavaScript. Prior to 2.0.1 of the argv-parser package, parseEnv omits VISUAL from GitEnvKeys, so prepareEnv drops the value before vulnerabilityCheck can classify it as allowUnsafeEditor. A consuming application that forwards attacker-influenced environment values can therefore allow Git to invoke an attacker-selected editor during operations such as commit amendment or interactive rebase when no higher-priority editor setting overrides VISUAL and Git's terminal prerequisites are met. The executable runs with the privileges of the Node.js process. This issue is fixed in argv-parser 2.0.1.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 401 npm packages depend on @simple-git/argv-parser (2 direct, 399 indirect)

Ecosystem-wide dependent count for version 2.0.1.

Technical POC Analysis

Incomplete denylist / security-control bypass in @simple-git/argv-parser parseEnv.

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

Latest POC

1 public PoC link from github

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

A critical command-injection vulnerability in simple-git and @simple-git/argv-parser (versions prior to 2.0.1) could let an attacker execute arbitrary code with the privileges of a Node.js application that forwards untrusted environment input to Git. This affects engineering and CI/CD environments where these libraries automate Git operations, with potential impact to source code integrity, build pipelines, and downstream production systems. Leadership should prioritize an inventory and mitigation plan because successful exploitation requires specific environmental conditions and no public exploit has been identified at time of analysis.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include: do not forward untrusted environment variables to simple-git or Git; explicitly set GIT_EDITOR to a fixed, non-attacker-controlled executable or script; unset or override VISUAL, EDITOR, and GIT_SEQUENCE_EDITOR in the Node.js process environment before Git operations; ensure GIT_EDITOR or core.editor shadows VISUAL; run Node.js and CI/CD processes with least privilege; isolate runners; monitor for unexpected editor process execution; and inventory or remove affected simple-git and @simple-git/argv-parser versions prior to 2.0.1 where possible.

Threat Intelligence Overview

EPSS Score
0.3%
Top 82% exploitable
Prevalence
High
simple-git is a very widely used npm Git-wrapper library in Node.js apps and CI
Threat Intel
1
1 sources
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GHSA 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 CRITICAL
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity + public POC available
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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

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