Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPlant symlinks in shared repository
-
DeliveryDeveloper clones or pulls repository
-
ExploitDeveloper runs capgo login/build credentials command
-
ExecutionCLI writes through symlink without validation
-
ImpactArbitrary developer-owned file overwritten with attacker content
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Symlink resolution safety
|
| Exploitation Conditions | Exploitation requires the attacker to have pre-placed symbolic links named .capgo or .capgo-credentials.json within a directory where the developer subsequently runs the Capgo CLI. This is most naturally achieved by contributing symlinks to a repository that the developer clones (e.g., a pull request adding .capgo as a symlink, which is a file type git tracks). The developer must then actively invoke one of two specific CLI commands: capgo login [key] --local (triggering Issue 1) or capgo build credentials save --local (triggering Issue 2). No authentication to any remote service is required for exploitation - Issue 2 explicitly occurs even when the user is not logged in. Exploitation is limited to the file system permissions of the developer running the CLI; the attacker cannot overwrite files owned by other users. The permissions exposure (Issue 3) occurs whenever global credentials are saved, even without a symlink, but requires access to the same host to read the credentials. |
| Impact | The CVSS 4.0 base score of 6.8 reflects a local attack vector (AV:L) requiring active user interaction (UI:A), which significantly constrains mass exploitation compared to network-reachable flaws. However, the real-world risk to software development teams is meaningfully higher than the raw score suggests. The attack scenario - a malicious or compromised repository containing planted symlinks - is a well-understood supply chain vector that requires only that a developer clone and operate the CLI, actions performed routinely. The integrity impact is rated High (VI:H) because arbitrary file overwrite is achievable with attacker-chosen content. The confidentiality impact is rated Low (VC:L) for the permissions-leak issue, but in practice, exposure of mobile signing credentials (Android keystore, iOS distribution certificates, Play/App Store API keys) on shared CI runners constitutes a meaningful secret compromise. EPSS data was not provided; exploitation probability cannot be quantified from available sources. No KEV listing confirms active exploitation. A PoC is publicly documented in the GHSA advisory, lowering the bar for exploitation. The version discrepancy between NVD (12.128.2) and GHSA/npm (7.84.6) should be verified - defenders should patch to the highest confirmed fixed version available for their package manager. |
| Exploit ScenarioDerived | An attacker publishes or contributes to a repository containing pre-planted symbolic links: .capgo pointing to a critical developer-owned file such as ~/.ssh/authorized_keys, and .capgo-credentials.json pointing to a shared configuration file. When the developer clones this repository and runs capgo login SOME_KEY --local or capgo build credentials save --local within it, the CLI writes attacker-controlled content directly to the symlink targets - overwriting SSH keys, configuration files, or other sensitive paths. A working PoC for the .capgo clobber path is publicly documented in the GHSA advisory, confirming this scenario is reproducible with minimal effort. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 22, 2026
Symlink-following vulnerabilities in Capgo CLI before version 12.128.2 (npm @capgo/cli < 7.84.6) allow an attacker who controls a repository to overwrite arbitrary files on a developer's machine and expose sensitive signing credentials when the developer runs CLI login or build credential operations inside that repository. Three distinct issues are present: unsafe writeFileSync on .capgo and .capgo-credentials.json without symlink validation, and global credential files written with world-readable 664 permissions instead of the required 0600. A proof-of-concept demonstrating the .capgo clobber is publicly documented in the GitHub Security Advisory GHSA-8mpm-q7mh-8fvh. No CISA KEV listing exists at time of analysis, but exploitability is straightforward given the PoC and low attack complexity.
RemediationAI
The primary fix is to upgrade @capgo/cli to version 7.84.6 or later via npm (npm install -g @capgo/cli@7.84.6 or equivalent). The upstream patch is available at https://github.com/Cap-go/CLI/commit/b8aa5ccbfad2d7f10f3cdbc00910d4a6aab026b2 and the vendor advisory is at https://github.com/Cap-go/capgo/security/advisories/GHSA-8mpm-q7mh-8fvh. If an immediate upgrade is not possible, avoid running any capgo login --local or capgo build credentials save --local commands inside repositories you do not fully control or that originate from untrusted contributors - this eliminates the primary trigger condition. As a compensating control for the permissions issue (Issue 3), manually chmod 600 $HOME/.capgo-credentials/credentials.json and chmod 700 $HOME/.capgo-credentials/ after each credentials write. On CI systems, isolate the runner user and ensure credential directories are not world- or group-readable as a baseline hardening measure. Note that these workarounds do not address the underlying symlink-following flaw and should only be used as a bridge to patching.
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
Capgo CLI (cpe:2.3:a:capgo:cli:*:*:*:*:*:*:*:*) is an npm-distributed command-line tool for the Capgo Capacitor live-update platform. The root cause is CWE-59 (Improper Link Resolution Before File Access - Link Following): the CLI performs writeFileSync() and writeFile() operations on filenames relative to the current working directory (.capgo, .capgo-credentials.json) without first checking whether those paths resolve through a symbolic link. Issue 1 is in src/login.ts, which writes the API key before validating it with verifyUser(), meaning symlink exploitation succeeds even on failed authentication. Issue 2 is in src/build/credentials.ts, which writes credential JSON without any symlink guard and without requiring the user to be authenticated. Issue 3 is also in src/build/credentials.ts: the global path at $HOME/.capgo-credentials/credentials.json is created with default umask-derived 664 permissions rather than the hardened 0600, exposing Android keystore data, Play Store configuration, and iOS signing certificates on multi-user or CI systems.
Know when Capgo 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:L/AC:L/AT:N/PR:N/UI:A/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N
Local vector because attacker pre-plants symlinks in a repo; UI:R for mandatory developer CLI invocation; C:L for world-readable credential exposure; I:H for arbitrary file overwrite.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
Capgo CLI before 12.128.2 contains arbitrary file overwrite vulnerabilities in login and build credentials operations that follow symlinks without validation. Attackers can create malicious symlinks in repositories to overwrite arbitrary files or expose credentials with world-readable permissions when developers run the CLI.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Account pre-registration hijack in Capgo before 12.128.2 lets a remote unauthenticated attacker claim an account under a
Cross-domain SSO account takeover in Capgo before 12.128.2 allows an attacker with enterprise org admin access and a mal
Authentication bypass in Capgo prior to version 12.128.2 lets attackers defeat email-based OTP verification by tampering
Authentication bypass in Capgo before 12.128.2 lets remote unauthenticated attackers mint arbitrary API keys by tamperin
Rate-limit bypass in Capgo versions prior to 12.128.2 lets remote unauthenticated attackers flood the channel_self endpo
Cross-tenant data poisoning in Supabase Capgo before 12.128.2 allows remote unauthenticated attackers to corrupt billing
Server-side privilege escalation in Capgo before 12.128.2 lets authenticated users holding build permissions abuse a pat
Unauthenticated information disclosure in Capgo before 12.128.2 lets remote attackers query the /functions/v1/channel_se
Unauthenticated information disclosure in Capgo before 12.128.2 exposes confidential business metrics through the Supaba
Unauthenticated denial of service in Cap-go capgo (capgo-backend) before 12.128.12 allows remote attackers to exhaust Po
Account takeover in Capgo before 12.128.2 stems from a password-change endpoint that omits current-password validation (
Information disclosure in Capgo (Capacitor live-update/OTA platform) before 12.128.2 lets unauthenticated callers abuse
EUVD-2026-38165
GHSA-4ch8-prch-6prf
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB