Description
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.
Published: 2026-09-26
Score: 6 Medium
EPSS: n/a
KEV: No
Impact: Authorization Bypass Leading to Unauthorized Bundle Updates
Action: Apply Workaround
AI Analysis

Impact

A database function called transfer_app() copies an app, its channels, and related records to a destination organization without removing or revalidating existing channel_permission_overrides. As a result, a former member of the source organization keeps an override that still applies to the destination organization’s channel. When that user authenticates to the PostgREST API with a valid JWT they can modify the channel to point at an attacker‑selected bundle. The /updates endpoint then serves that malicious bundle to devices, effectively delivering arbitrary code. The flaw is a classic example of the correct weakness identifier CWE-863, Authorization Bypass Through Boolean Logic. The impact is that an attacker can cause devices to receive and run software that they did not approve, leading to data loss or exposure on those devices.

Affected Systems

The CAP‑GO platform capgo.app, which provides over‑the‑air updates for Capacitor apps, is affected in all versions up to and including the current release. No patch is available at the time of publication, so all deployed instances remain vulnerable.

Risk and Exploitability

The CVSS score is 6.0, indicating medium severity. EPSS information is not available, and the vulnerability is not listed in the CISA KEV catalog. The likely attack vector is through the PostgREST API, requiring a legitimate JWT belonging to a former organization member. Although an exploit is not publicly disclosed, the flaw provides a straightforward path for an attacker to alter the bundle served to devices, enabling remote code execution or malicious updates.

Generated by OpenCVE AI on September 26, 2026 at 14:52 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Delete all stale channel_permission_overrides that belong to users who are no longer members of the destination organization immediately after an app transfer.
  • Modify the PostgREST API to validate that the operator’s current organization membership matches the target organization before allowing any channel_permission_override creation or update.
  • Schedule a daily background job to scan and purge any channel_permission_overrides whose associated organization has no current members or whose users have been removed from the system.
  • Force all users to re‑authenticate after any transfer operation to ensure that session tokens do not carry stale permissions.

Generated by OpenCVE AI on September 26, 2026 at 14:52 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 26 Sep 2026 13:30:00 +0000

Type Values Removed Values Added
Description 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.
Title capgo.app Authorization Bypass via Stale Channel Permission Overrides
Weaknesses CWE-863
References
Metrics cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N'}

cvssV4_0

{'score': 6, 'vector': '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'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-26T13:22:54.681Z

Reserved: 2026-09-26T02:30:34.353Z

Link: CVE-2026-100613

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-26T14:16:41.903

Modified: 2026-09-26T14:16:41.903

Link: CVE-2026-100613

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-26T15:00:14Z

Weaknesses