Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker supplies malicious VISUAL env value
-
DeliveryApp forwards env into simple-git call
-
ExploitparseEnv fails to flag VISUAL as unsafe editor
-
ExecutionGit invokes attacker command during commit-amend/rebase
-
ImpactArbitrary 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 |
| 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., |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
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).
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.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- 401 npm packages depend on @simple-git/argv-parser (2 direct, 399 indirect)
Ecosystem-wide dependent count for version 2.0.1.
Articles & Coverage 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
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.
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
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
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
EUVD-2026-89336
GHSA-v5rq-49vh-5v5c
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB