Skip to main content

isomorphic-git EUVDEUVD-2026-116269

| CVE-2026-63478 MEDIUM
Path Traversal (CWE-22)
2026-11-03 GitHub_M
5.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Host malicious repo on non-GitHub remote (or MitM)
  2. Delivery
    Victim clones/checks out via isomorphic-git
  3. Exploit
    Nested '..' tree entries pass the per-entry parser guard
  4. Execution
    Write files above the working-tree root
  5. Impact
    Overwrite 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

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

Alert me

AnalysisAIv1 – 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

isomorphic-git < 1.38.6

Affected Packages

euvd isomorphic_git fix: 1.38.6

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

Vendor (GitHub_M) PRIMARY 5.3 MEDIUM
AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:N
vuln.today AI 5.3 MEDIUM

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.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
None

Lifecycle Timeline

1
Patch available
Nov 03, 2026 - 21:03 EUVD

DescriptionCVE.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

Prevalence
Medium
popular pure-JavaScript Git library on npm, common in JS tooling
Data Quality
3 sources
Confidence: Low

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 MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

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.

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