Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPublish malicious repo with two-state tree
-
DeliveryVictim clones repo planting directory symlink
-
ExploitVictim later pulls adding child file
-
Executionisomorphic-git writes file through leading symlink
-
PersistPayload lands in ~/.ssh or .git/hooks
-
ImpactCode execution on host
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 a consuming application using isomorphic-git <= 1.38.5 with the Node fs provider on Linux or macOS, processing an attacker-controlled repository via git.checkout. The concrete trigger is a clone that checks out commit N (planting 'config' as a directory symlink to a target such as ~/.ssh or .git) followed by a later pull checking out commit N+1 (adding a child path like 'config/authorized_keys'); a single clone also triggers it when the symlink already exists on disk or the app reads/writes into the cloned tree. Limiting factors that reduce real-world risk: user interaction is needed (clone/pull of an untrusted repo); Node fs on Windows typically throws EPERM on symlink creation so it is not exploitable without privilege; and browser or in-memory providers (memfs, ZenFS, lightning-fs) confine impact to their virtual filesystem and are affected only if they implement symlink creation and following. The only complete fix per the vendor is updating to 1.38.6. |
| Impact | Signals mostly align toward a genuine priority but fall short of emergency. The provided CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H, base 8.8) reflects the worst case - Node fs on a POSIX host - where a malicious repository yields arbitrary host file write and likely RCE. UI:R is accurate and meaningful: exploitation needs the victim to clone and later pull (or clone a repo where a symlink already exists), so this is not drive-by; it requires processing an attacker-controlled repository. The vuln.today decision label is 'this_week', consistent with high technical impact but no confirmed mass exploitation. No CISA KEV entry is present in the input, so this is NOT confirmed actively exploited. No EPSS score was supplied, so exploitation probability cannot be quantified from this data. A public PoC reference is provided (spiceoverflow/av1-symlink-hook-rce) and the GHSA shows confirmed SSH-key-injection output on Linux, but the input does not carry a 'POC: Publicly available (confirmed)' label, so it is treated as a public PoC reference, not verified working exploit code. The real-risk caveat is deployment-dependent and explicitly stated by the vendor: Node fs on Windows usually blocks the symlink plant (EPERM) and is not exploitable by default, while browser/in-memory providers are sandboxed and affected only if they implement symlink creation and following. So the 8.8 applies to server-side Linux/macOS consumers that process untrusted repos; for Windows-only or browser-only deployments the real-world risk is substantially lower. |
| Exploit ScenarioDerived | A server, CI job, or desktop tool uses isomorphic-git with Node fs on Linux/macOS to clone an attacker-controlled repository (commit N stores 'config' as a directory symlink pointing at, e.g., ~/.ssh or .git), then performs a routine pull (commit N+1 adds 'config/authorized_keys' or 'hooks/pre-commit'); isomorphic-git writes the child file through the leading symlink, landing it outside the working tree. A public PoC reference exists and the advisory demonstrates confirmed SSH key injection, though the input does not mark it as verified working exploit code. Exploitation requires user interaction (the clone/pull of an untrusted repo) but no authentication to the victim. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
isomorphic-git's git.checkout writes working-tree files through symlinked leading directory components without validating them, so a malicious repository can escape the checkout directory and overwrite arbitrary host files. Deployments using the Node fs provider on Linux or macOS are exposed to writes anywhere the process can reach - the advisory's demonstrated path injects an SSH key into ~/.ssh/authorized_keys, and an alternative plants hooks or rewrites .git/config to achieve code execution on the next native git command. Exploitation requires the victim to clone and later pull (or otherwise access) an attacker-controlled repo, which is the UI:R component of the CVSS 8.8 vector; Node fs on Windows typically fails at symlink creation with EPERM, and browser/in-memory providers are confined to their virtual filesystem. No public working exploit is confirmed in the provided data, though a public PoC reference (av1-symlink-hook-rce) accompanies the advisory; fixed in 1.38.6.
RemediationAI
Upgrade isomorphic-git to version 1.38.6 (npm: isomorphic-git@1.38.6), which the vendor identifies as the only complete fix; the patched checkout lstat-checks every leading path component and refuses to traverse a symlink, mirroring git's has_symlink_leading_path(). Details are in advisory GHSA-9qw7-j9xw-fv9c and release https://github.com/isomorphic-git/isomorphic-git/releases/tag/v1.38.6, with the change in PR 2370 and commit 823843d1. Until the upgrade is deployed, reduce exposure by not running git.checkout on untrusted or unreviewed repositories in processes whose filesystem privileges extend beyond the checkout directory, and by keeping clone/pull targets inside a directory the process may fully overwrite; running the consuming application as a low-privilege account or inside a container whose writable mounts exclude ~/.ssh and any git control directory limits the blast radius of a successful escape. On Linux/macOS the escape depends on real symlinks being created and followed, so restricting symlink creation for the checkout user (or using a filesystem or sandbox that rejects symlinks) blocks the plant step, at the cost of breaking legitimate repositories that contain symlinks. Node fs on Windows fails the plant with EPERM by default and browser or in-memory providers confine writes to their virtual filesystem, but neither property is a substitute for patching. Note that this issue was not listed in CISA KEV in the provided data, and the decision label is this_week rather than emergency.
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
isomorphic-git is a pure-JavaScript reimplementation of Git used by Node.js tooling and browser applications. The flaw is CWE-22 (path traversal) with an accompanying CWE-59 (link following) component rooted in the checkout write path: before writing a working-tree file, isomorphic-git does not lstat each leading path component the way canonical git does via has_symlink_leading_path() in symlinks.c, the same hardening that addressed CVE-2021-21300 and CVE-2024-32002. Because a single tree cannot contain a name as both a symlink and a directory, the attack is staged across two commits: commit N records 'config' as a mode 120000 symlink pointing at an attacker-chosen target (../.ssh, or .git), and commit N+1 replaces it with a mode 040000 tree containing 'config/authorized_keys'. On the second checkout the path is treated as a brand-new child; mkdir of the parent hits EEXIST and is ignored, and writeFile is then resolved by the OS through the pre-existing symlink, landing outside the working tree. The file-level symlink swap (120000 to 100644) is caught because the mode change forces an rm, but the directory-level variant never removes the parent symlink. Impact is governed by the fs provider rather than by isomorphic-git itself: real OS symlinks under Node fs on Linux/macOS give host file write and possible code execution, Windows usually throws EPERM at symlink creation, and memfs/ZenFS/lightning-fs or custom providers bound the damage to their virtual filesystem and are affected only if they implement symlink creation and following. The commit introducing the fix (823843d1) adds a server-only regression test asserting an 'unsafe' error when a checkout would traverse a planted directory symlink into an external sink directory.
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:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Malicious remote repo (AV:N) with a reliable two-commit technique (AC:L) and no victim authentication (PR:N) but requiring the victim's clone/pull (UI:R); arbitrary host file write yields full C/I/A impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
isomorphic-git is a pure JavaScript implementation of Git for Node.js and browsers. Prior to 1.38.6, isomorphic-git's git.checkout writes new child paths through symlinked leading directory components without checking them. A malicious repository can first place a directory symlink and later replace the tree state with a child file beneath that path; the usual trigger is a clone followed by a later pull, while a single clone can trigger the issue when a symlink already exists or the consuming application accesses the tree. With Node fs on Linux or macOS, the operating system can resolve the write outside the working tree, permitting arbitrary host file writes and possible code execution. Node fs on Windows usually blocks the symlink plant without additional privilege, and browser or in-memory providers limit impact to their virtual filesystem and are affected only when they implement symlink creation and following. This issue is fixed in version 1.38.6.
Executive ViewAI
A high-severity vulnerability in isomorphic-git (CVE-2026-63395) allows a malicious repository to overwrite arbitrary files on developer machines, including SSH authorized_keys and git hooks, potentially leading to remote code execution. Development teams using the Node fs provider on Linux or macOS are exposed if they clone or pull from untrusted repositories. Leadership should prioritize immediate patching and restrict repository sources to mitigate risk.
Apply vendor patch.
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-116274
NVD
CVE.org
GitHub
Exploit-DB