Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain app-scoped write/all API key
-
DeliverySend PUT /bundle with denied channel_id
-
ExploitcheckPermission omits channel_id (SQL NULL)
-
ExecutionPer-channel deny override never evaluated
-
PersistUpdate public.channels.version
-
ImpactPush OTA bundle to end-user devices
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Exploitation requires a valid Capgo API key of type 'all' or 'write' bound to a role carrying app-level channel.promote_bundle (granted by default to the app_developer and app_uploader roles) - so the actor is an already-privileged deployer, not an anonymous outsider. The flaw only produces impact when an administrator has actually configured an explicit per-channel deny (or allow) override on the target channel_id; without such an override there is nothing to bypass. The attacker must also know or supply the target channel_id of a channel they were explicitly denied. No user interaction is needed and the endpoint is network-reachable (PUT /bundle). |
| Impact | The only quantitative signal provided is the vendor/VulnCheck CVSS 4.0 base score of 7.2 (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:H). No EPSS probability, no CISA KEV listing, and no public exploit code are present in the input, so exploitation status is 'no public exploit identified at time of analysis.' This is a genuine authorization flaw (CWE-639 IDOR), not a high-CVSS-but-empty issue, but its real-world priority is moderated by an important prerequisite the raw score understates: the attacker must ALREADY hold an app-level 'channel.promote_bundle' permission (default on the app_developer and app_uploader roles) via a valid 'all' or 'write' API key. The vulnerability does not grant a new capability to an outsider - it lets an already-privileged deployer bypass a narrower per-channel DENY override. I note a labeling conflict: the input Tags call this 'Authentication Bypass,' but the mechanism (a privileged principal circumventing a per-channel authorization override) is authorization/access-control, consistent with the assigned CWE-639. There is no independent evidence (EPSS/KEV/POC) to elevate this beyond a targeted, low-likelihood risk against Capgo self-hosters and the Capgo cloud backend. |
| Exploit ScenarioDerived | An attacker (or a compromised low-trust CI token) holding a Capgo 'write' or 'all' API key with the default app_developer/app_uploader role sends a PUT /bundle request naming a channel_id for which an administrator has configured an explicit per-channel deny override. Because the promotion path never forwards channel_id into the RBAC check, the deny override is silently skipped and the attacker updates public.channels.version, delivering an OTA bundle to that channel's end-user devices. No public proof-of-concept is referenced in the available data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 26, 2026
Capgo's Supabase backend bundle-promotion API allows an authenticated API key holder with app-level channel.promote_bundle to bypass explicit per-channel deny overrides and promote a bundle to a channel they were denied, updating public.channels.version. This affects Capgo (Cap-go/capgo.app) deployments, confirmed on main at commit de66fa51e7ff2f50283cc1455c3d80ab3eb0ae43 and likely earlier versions; no vendor-released patch was known at publication. The flaw only has impact when an administrator has configured a per-channel allow or deny override on the target channel_id, and no public exploit identified at time of analysis; the vendor/VulnCheck CVSS 4.0 base score is 7.2.
RemediationAI
No vendor-released patch identified at time of analysis, and no exact fix version is available; track the vendor advisory https://github.com/Cap-go/capgo.app/security/advisories/GHSA-633x-9x77-77gf and VulnCheck advisory https://www.vulncheck.com/advisories/capgo-bundle-promotion-api-channel-rbac-deny-override-bypass for the patched release. As compensating controls, revoke or rotate API keys of type 'all' or 'write' that are not strictly required, and remove app-level channel.promote_bundle from app_developer and app_uploader roles until a fix is deployed; this reduces exposure but breaks or requires manual re-granting for legitimate bundle deployment workflows. If an API gateway or reverse proxy is available, block or restrict PUT /bundle to trusted administrative sources or require an additional channel-scoped authorization check for the supplied channel_id; this stops the bypass but may disrupt CI/CD bundle promotions. For self-hosted Supabase functions, harden setChannel/checkPermission to require and forward channel_id and reject authorization decisions where p_channel_id is NULL so per-channel allow/deny overrides are evaluated; this is a custom divergence from upstream and must be regression-tested. Monitor public.channels.version changes and audit authorization calls with NULL channel scope, but treat such monitoring as detection rather than prevention.
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
The vulnerable component is Capgo's server backend implemented as Supabase functions, where the PUT /bundle endpoint, available to API keys of type 'all' or 'write', dispatches to setChannel. setChannel calls checkPermission(c, 'channel.promote_bundle', { appId: body.app_id }) but omits the request's channel_id. That omitted scope is passed as SQL NULL into rbac_check_permission_direct, and channel-scope override evaluation is gated on p_channel_id IS NOT NULL, so explicit per-channel allow/deny overrides are never evaluated. Consequently a principal that already holds app-level channel.promote_bundle, which is granted by default to app_developer and app_uploader roles, can promote a bundle to a channel with an explicit per-channel deny override; the target channel_id is only validated after authorization, and public.channels.version is updated for the supplied channel. This is an authorization-scope omission consistent with CWE-639 (Authorization Bypass Through User-Controlled Key). The CPE cpe:2.3:a:cap-go:capgo.app:*:*:*:*:*:*:*:* covers capgo.app versions; the issue is confirmed on main at commit de66fa51e7ff2f50283cc1455c3d80ab3eb0ae43 and likely earlier. The vendor/VulnCheck CVSS 4.0 base score is 7.2 with vector AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N, while our independent assessment is CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:L, reflecting a network-reachable, low-privileged authenticated deployer with no user interaction and an impact requiring a pre-existing per-channel override.
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:N/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N
PR:L because a role-scoped write/all API key is required; S:C and I:H/A:L because the bypass pushes an unauthorized OTA bundle onto end-user devices (a separate system) with no confidentiality impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Capgo (Cap-go/capgo.app) server backend Supabase functions contain an incorrect authorization flaw in the API-key bundle promotion path. The PUT /bundle endpoint, available to "all" and "write" API keys, dispatches to setChannel, which authorizes with checkPermission(c, 'channel.promote_bundle', { appId: body.app_id }) and omits the request's channel_id. Because the omitted scope field is passed to rbac_check_permission_direct as SQL NULL, and channel-scope override evaluation is gated on p_channel_id IS NOT NULL, per-channel allow/deny overrides are never evaluated. A principal holding app-level channel.promote_bundle (granted by default to the app_developer and app_uploader roles) can therefore promote a bundle to a channel for which an explicit per-channel deny override exists, updating public.channels.version for the supplied channel_id; the target channel is only validated after authorization. The issue is confirmed on main at commit de66fa51e7ff2f50283cc1455c3d80ab3eb0ae43 and likely earlier versions; no patched version is known at the time of publication.
Technical POC Analysis
CWE-639 (assigned; the description calls it "incorrect authorization") in Capgo's Supabase backend bundle-promotion path.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A privilege-control gap in Capgo's Supabase backend allows a holder of an app-level API key to promote an update bundle onto a release channel that administrators had explicitly denied, undermining the guardrails that govern which software versions reach end users. Organizations relying on Capgo for over-the-air delivery of their mobile applications should treat their channel restriction settings as potentially unenforceable until remediated, as the flaw only takes effect on channels where an allow or deny override has been configured. No vendor-released patch was identified at time of analysis and no public exploit has been identified, so this is currently a control-integrity and audit exposure rather than an active compromise.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict and rotate API keys carrying the app-level channel.promote_bundle permission and issue narrowly scoped per-app keys; remove channel.promote_bundle from keys that do not require promotion automation; treat administrator-configured per-channel allow/deny overrides as non-authoritative and enforce approval outside Capgo; monitor and alert on changes to public.channels.version; audit all channels for unauthorized bundle promotions and revert any unapproved version.
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
Affected Products (CPE)CVE.org
Improper access control in Capgo (capgo.app) lets any holder of an ordinary full API key forge a trusted SSO provider by
Authorization bypass in Capgo (capgo.app), a live-update/OTA platform for Capacitor mobile apps, allows a de-provisioned
Account pre-registration hijack in Capgo before 12.128.2 lets a remote unauthenticated attacker claim an account under a
Authentication bypass in Capgo prior to version 12.128.2 lets attackers defeat email-based OTP verification by tampering
Cross-tenant data poisoning in Supabase Capgo before 12.128.2 allows remote unauthenticated attackers to corrupt billing
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
Authenticated administrators on Capgo (capgo.app) can grant channel-scoped permissions to non-member users because the p
EUVD-2026-87721
GHSA-w4hm-mr28-xj78
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB