Description
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.
Published: 2026-09-26
Score: 7.2 High
EPSS: n/a
KEV: No
Impact: Authorization Bypass
Action: Assess Impact
AI Analysis

Impact

Cap-go’s Capgo backend contains an RBAC flaw in the /bundle PUT endpoint that allows any user with write permissions to promote a bundle to a channel, even when an explicit per‑channel deny override exists. The flaw arises because the channel identifier is omitted from the permission check, rendering channel‑level overrides ineffective and permitting privileged actors to elevate their authorization through the app‑level channel.promote_bundle permission. This can enable malware or malicious updates to be pushed to a channel that should have been protected, compromising data integrity and potentially affecting end users.

Affected Systems

The vulnerability affects all installations of Cap-go’s Capgo server, specifically the Supabase functions that expose the /bundle API. It is present in the main branch as of commit de66fa51e7ff2f50283cc1455c3d80ab3eb0ae43 and likely older releases, with no patched version available at time of disclosure.

Risk and Exploitability

The CVSS v3.1 score of 7.2 indicates a high impact, and although the EPSS score is not available, the vulnerability is exploitable by any party that can obtain an 'all' or 'write' API key, which is common for regular application developers. The KEV status is not listed, but given the high score and the ability to bypass channel‑level controls, the risk warrants prompt assessment and mitigation. The attack vector is an authenticated API call; the prerequisite is possession of an API key with write authorization, which can be obtained through legitimate use or compromise of application credentials.

Generated by OpenCVE AI on September 26, 2026 at 15:17 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Restrict the use of "all" and "write" API keys to trusted environments and rotate keys regularly
  • Modify the backend to include the channel_id in the permission check or re‑implement the rbac_check_permission_direct call to evaluate per‑channel overrides
  • Audit bundle promotion logs for unauthorized channel activity and investigate any anomalies immediately

Generated by OpenCVE AI on September 26, 2026 at 15:17 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 (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.
Title Capgo bundle promotion API channel RBAC deny override bypass
Weaknesses CWE-639
References
Metrics cvssV3_1

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

cvssV4_0

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


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-26T13:23:04.377Z

Reserved: 2026-09-26T02:31:42.099Z

Link: CVE-2026-100627

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

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

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

Link: CVE-2026-100627

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-26T15:30:08Z

Weaknesses
  • CWE-639

    Authorization Bypass Through User-Controlled Key