Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessHost malicious repo on non-GitHub remote (or MitM)
-
DeliveryVictim clones/checks out via isomorphic-git
-
ExploitNested '..' tree entries pass the per-entry parser guard
-
ExecutionWrite files above the working-tree root
-
ImpactOverwrite shell rc/startup file for code execution
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires that the victim perform a clone or checkout with isomorphic-git (<= 1.38.5) against a repository the attacker controls on a non-GitHub remote - specifically a self-hosted or Smart-HTTP remote - or that the attacker hold a man-in-the-middle position on the transport. The repository must contain nested '..' tree entries (one per level) to escape the working-tree root to a chosen depth, and the target must use a host-backed fs provider (works on Linux, macOS, and Windows with no symlink or privilege required). Key limiting factors: GitHub-hosted trees are NOT a usable source because GitHub runs fsck on push and rejects '..' entries; exploitation needs user-initiated clone/checkout of untrusted content (UI:R); and impact depends on a writable, security-relevant parent-path file (e.g., shell rc/config/startup) existing to escalate the write to code execution. Authentication is not required (PR:N in the supplied vector). |
| Impact | Signals point to a moderate, not emergency, priority. The input CVSS is 5.3 (Medium) with vector CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:N: network vector and no authentication, but offset by high attack complexity, required user interaction, and impact limited to integrity (arbitrary file write) only. The high complexity is real and grounded in the evidence rather than inferred from a bug class: exploitation requires the victim to clone/checkout from a non-GitHub remote the attacker controls (self-hosted/Smart-HTTP) or a man-in-the-middle position, because GitHub's fsck rejects '..' trees on push, so the common GitHub-hosted workflow is not a direct source. No KEV listing is present and no EPSS score was provided, so there is no evidence of active or widespread exploitation - exploitation status is a public PoC reference, not confirmed in-the-wild use. The vuln.today Decision label is 'this_month', consistent with a genuine but non-urgent fix: a legitimate arbitrary-write-to-code-execution path, gated by attacker control of the remote and a user-initiated clone. Note a possible signal tension: the Tags include 'RCE' and the advisory states code execution is achievable by overwriting shell rc/startup files, yet the CVSS models impact as I:H / C:N / A:N (file write) rather than a direct code-execution metric, so the RCE outcome is a plausible downstream consequence rather than a primitive the base score captures. |
| Exploit ScenarioDerived | An attacker hosts a malicious repository on a self-hosted or Smart-HTTP remote (or intercepts a clone via MitM) containing nested '..' tree entries that the isomorphic-git tree parser fails to reject. When a victim application or user runs a single git.clone() or checkout against that remote on a host-backed filesystem, files are written at attacker-chosen parent paths above the working-tree root, overwriting a shell rc, config, or startup file to achieve code execution. A public PoC reference exists (spiceoverflow/av2-dotdot-traversal); it is not verified in the input as working exploit code, though the advisory reproduces it writing escaped.txt one directory above the clone target. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Path traversal (CWE-22) in isomorphic-git up to and including 1.38.5 lets a malicious or man-in-the-middle-controlled non-GitHub remote write attacker-chosen files outside the working-tree root when a victim clones or checks out that repository, and overwriting shell rc, configuration or startup files can escalate the write into code execution. Affected are Node.js and browser deployments using any host-backed fs provider on Linux, macOS or Windows; the issue is unauthenticated (PR:N in the vector) but requires user-initiated clone/checkout of untrusted content (UI:R) and a non-GitHub remote, because GitHub runs fsck on push and rejects '..' entries, and escalation further depends on a writable security-relevant parent-path file existing. A public PoC reference demonstrating the escape write exists; it is not verified as working exploit code, there is no CISA KEV listing, and the overall priority is moderate rather than an emergency.
RemediationAI
Vendor-released patch: 1.38.6 - upgrade the isomorphic-git dependency (for example npm install isomorphic-git@1.38.6 or pin the version in the lockfile) per the advisory at https://github.com/isomorphic-git/isomorphic-git/security/advisories/GHSA-cw2g-2vwq-88w6 and the release at https://github.com/isomorphic-git/isomorphic-git/releases/tag/v1.38.6; the fix is carried by PR #2370 and commit 823843d1cd19182df79bc907c767f5bcecb39a0b. Where upgrading is not immediately possible, compensating controls are to restrict automated clones and checkouts to trusted remotes or to GitHub-hosted repositories, since GitHub's fsck rejects '..' trees - at the cost of losing support for legitimate self-hosted/Smart-HTTP sources - and to enforce HTTPS with full certificate validation on any remaining non-GitHub remote so a transport MitM cannot inject a crafted tree, which does nothing against a deliberately malicious self-hosted server. Running clone/checkout under an unprivileged account and confining the clone target to a sandboxed or disposable filesystem keeps any escaped write away from shell rc, configuration and startup files that would turn the write into code execution, though it may break workflows that legitimately write outside the target directory. The vendor's complete fix is the 1.38.6 path validation; the remaining measures only reduce reachability.
Affected VersionsENISA
Affected Packages
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
The defect sits in isomorphic-git's tree parser (src/models/GitTree.js), which validates each tree-entry name only against the path separators '/' and '\\'. A standalone '..' name passes that guard, and because isomorphic-git assembles the destination path incrementally while walking tree levels, nesting '..' tree objects - each a separate object that individually satisfies the per-entry check - yields '../escaped.txt', '../../escaped.txt' and so on to unbounded depth. On checkout the mkdir of workdir/.. returns EEXIST, which is ignored, and the blob is then written above the working-tree root. This diverges from canonical git, where verify_path() rejects the path (git read-tree fails with 'invalid path') and fsck flags hasDotdot; that fsck behavior is also why GitHub-hosted repositories cannot serve as a source, leaving self-hosted/Smart-HTTP remotes or a transport MitM as the delivery vectors. The fix in PR #2370 rejects '.' and '..' entries and normalizes/bounds-checks the assembled full path against the working-tree root before any filesystem write, and the accompanying tests also block writing through a planted directory symlink in the leading path; rejecting '.git' (and NTFS 8.3 / HFS variants) was added for verify_path parity and defense in depth, but a literal '.git' entry is not independently exploitable via clone/checkout in the current code. The vulnerability class is CWE-22, an arbitrary file write that becomes code execution only through the files it can overwrite.
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
AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:N
Network-delivered but AC:H because it requires an attacker-controlled non-GitHub remote or MitM; UI:R for the victim-initiated clone; PR:N (no auth); impact is arbitrary file write, so I:H with C:N/A:N.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
isomorphic-git is a pure JavaScript implementation of Git for Node.js and browsers. Prior to 1.38.6, isomorphic-git's tree parser in src/models/GitTree.js accepts a standalone .. tree-entry name because it rejects only path separators. During clone or checkout from a malicious or man-in-the-middle-controlled non-GitHub remote, nested .. entries can escape the working-tree root and write files at attacker-selected parent paths on any host-backed fs provider. The arbitrary file write can overwrite startup or configuration files and lead to code execution. GitHub-hosted trees are not a direct source because GitHub rejects .. entries during repository integrity checks. This issue is fixed in version 1.38.6.
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
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-116269
NVD
CVE.org
GitHub
Exploit-DB