Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with retained JWT
-
ExploitDetect stale override after app transfer
-
ExecutionCall PostgREST to repoint channel bundle
-
Impact/updates serves attacker version to devices
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation 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) the attacker previously held a legitimate channel_permission_override as a member of the source organization; (2) an admin executed the transfer_app() operation moving the app, channels, and versions to a destination organization; (3) the attacker retains a valid authenticated JWT (PR:L) to call the PostgREST API. Limiting factors: it only affects deployments that actually use Capgo's cross-organization app-transfer feature, the attacker must have been a prior override-holder, and impact is confined to integrity (repointing a channel to serve a different bundle) - no data disclosure or service outage. No user interaction is needed. The condition maps to the vendor's AT:P attack requirement. |
| Impact | This is a genuine but bounded authorization flaw (CWE-863), not a high-CVSS-but-hollow issue nor a top-tier emergency. The vendor CVSS 4.0 vector (6.0, AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:H/VA:N) is internally consistent with the description: network-reachable via the PostgREST API, requires an authenticated JWT (PR:L), and is integrity-only (VI:H) with no confidentiality or availability impact. The AT:P (attack requirement) correctly captures that exploitation is not universally reachable - it depends on a prior legitimate override plus an app transfer having occurred. No EPSS score, no CISA KEV listing, and no public POC are present in the provided data, so there is no public exploit identified at time of analysis and no evidence of active exploitation; the signals point to a targeted, precondition-dependent issue rather than mass exploitation. The most important aggravating factor is that NO patch is available at time of publication and the prior fix (PR #3093 / GHSA-626c-p6fq-3whq) is explicitly incomplete - it validates membership on override create/update but does not purge overrides made stale by transfer_app(). Net: real priority for any org that uses Capgo's app-transfer feature between organizations, but low urgency for the broader population given niche deployment and precondition gating. |
| Exploit ScenarioDerived | A user legitimately holds a channel_permission_override while a member of Source Org. An admin later transfers the app (with its channels and versions) to Destination Org via transfer_app(), which fails to revalidate or delete the stale override. The former member - now with no membership or RBAC binding in Destination Org - uses their own authenticated JWT against the PostgREST API to repoint the destination-owned channel at an attacker-chosen bundle, so the /updates endpoint delivers an attacker-selected application version to end-user devices. No public POC is identified in the provided data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 26, 2026
Stale channel permission overrides in Capgo can let a former source-organization member repoint a destination-owned app channel after a cross-organization app transfer, causing the /updates endpoint to serve an attacker-selected OTA bundle to devices. The flaw affects all Capgo (capgo.app) versions up to and including the current release, requires an authenticated attacker (PR:L) who previously held a legitimate override and an admin-run transfer_app() operation, and is bounded to integrity impact with no data disclosure or outage. No public exploit identified at time of analysis, and no vendor-released patch was available at publication.
RemediationAI
No vendor-released patch was identified at time of analysis. Until a fix is available, audit and delete stale channel_permission_overrides rows that reference users who are no longer members of the destination organization after any transfer_app() run; this directly removes the exploitable condition but may revoke legitimate overrides if they are not recreated under destination RBAC. If cross-organization app transfers are not required, disable or tightly restrict execution of transfer_app() to trusted administrators and restrict direct PostgREST channel-modification paths for non-members via row-level security. Require current organization membership and RBAC checks on channel updates, and add cleanup or revalidation logic to transfer_app() so overrides are not carried over. Monitor vendor advisory https://github.com/Cap-go/capgo.app/security/advisories/GHSA-6mj9-x3ww-rpj9 for a patched release; note that the previously proposed fix in PR #3093 for GHSA-626c-p6fq-3whq only validates membership on override creation or update and does not remediate stale overrides created by transfers.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Capgo is an over-the-air update platform for Capacitor apps, exposing a PostgREST API over a database that includes the transfer_app() function and the channel_permission_overrides table. CWE-863 (incorrect authorization) applies because transfer_app() moves an app, its channels, versions, and related records to a destination organization but does not delete or revalidate existing channel_permission_overrides rows; a user who legitimately held an override while in the source organization keeps that override after transfer, despite having no membership or RBAC binding in the destination. An authenticated attacker leveraging their own JWT can then modify a destination-owned channel to point at a different bundle, so the /updates endpoint distributes an attacker-selected application version. The affected CPE is cpe:2.3:a:cap-go:capgo.app:*:*:*:*:*:*:*:* (all versions). Vendor/CVSS 4.0 score is 6.0 (CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N), and the independent assessment aligns with an authenticated integrity-only issue (CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N); exploitation requires a prior legitimate override, an admin-run transfer, and a valid JWT, with no user interaction. The previously proposed fix for GHSA-626c-p6fq-3whq (PR #3093) validates organization membership when an override is created or updated but does not remove overrides that become stale through an app transfer.
Know when Cap Go 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:L/AT:P/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
Network PostgREST API with a valid JWT gives AV:N/PR:L; the required prior override plus app-transfer precondition raises AC:H; integrity-only bundle tampering gives I:H, C:N, A:N.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
capgo.app is an over-the-air (OTA) update platform for Capacitor apps. In all versions up to and including the current release (no patch available at time of publication), the transfer_app() database function transfers an app, its channels, versions and related records to a destination organization without deleting or revalidating existing rows in channel_permission_overrides. As a result, a user who legitimately held a channel permission override while a member of the source organization retains that override after the transfer, even though they have no membership and no RBAC binding in the destination organization. Using their own authenticated JWT against the PostgREST API, such a former member can modify the destination-owned channel to point at a different bundle, causing the /updates endpoint to serve an attacker-selected application version to devices. The previously proposed fix for GHSA-626c-p6fq-3whq (PR #3093), which validates organization membership when an override is created or updated, does not remove overrides that became stale as a result of an app transfer.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Affected Products (CPE)CVE.org
Account pre-registration hijack in Capgo before 12.128.2 lets a remote unauthenticated attacker claim an account under a
Improper access control in Capgo (capgo.app) lets any holder of an ordinary full API key forge a trusted SSO provider by
Authentication bypass in Capgo prior to version 12.128.2 lets attackers defeat email-based OTP verification by tampering
Authorization bypass in Capgo (capgo.app), a live-update/OTA platform for Capacitor mobile apps, allows a de-provisioned
Cross-tenant data poisoning in Supabase Capgo before 12.128.2 allows remote unauthenticated attackers to corrupt billing
Unauthenticated denial of service in Cap-go capgo (capgo-backend) before 12.128.12 allows remote attackers to exhaust Po
Unauthenticated retrieval of deleted over-the-air update bundles from capgo.app through version 12.129.0 is possible via
Capgo's direct exposure of the public.org_users table through Supabase PostgREST lets an authenticated user who already
Authenticated principals who hold an app-scoped upload/write/all API key with upload+ rights - or any user granted write
Cross-tenant metadata modification in Capgo before 12.244.1 allows an authenticated attacker to alter image object metad
Privilege escalation in the Capgo (capgo.app) backend through version 12.242.4 allows an authenticated API key holder to
Privilege escalation in Capgo (capgo.app) before 12.267.1 allows a principal holding the apikey_manager role to rotate a
EUVD-2026-87708
GHSA-jx6g-vmp7-mvxq
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB