Description
capgo.app (npm package `capgo`) through version 12.207.1 does not compare the caller's role rank against the requested role in the validateInvite() function of supabase/functions/_backend/private/invite_new_user_to_org.ts. The POST /private/invite_new_user_to_org endpoint only requires the org.update_user_roles permission for org_super_admin invitations, so an authenticated user holding only the org.invite_user permission (e.g., an org_member) can invite an external user as org_admin or org_billing_admin. When the invited account accepts the invitation via POST /private/accept_invitation, ensureOrgMembership creates the role binding using the Supabase service-role key, which bypasses the prevent_role_binding_priority_escalation and check_org_user_privileges database triggers. This allows privilege escalation resulting in full administrative control over the organization's apps, channels, members, and billing. The issue is addressed by pull request #3096, which compares the inviter's rank before permitting elevated invitations.
Published: 2026-09-10
Score: 8.6 High
EPSS: n/a
KEV: No
Impact: Privilege Escalation
Action: Apply Patch
AI Analysis

Impact

In the capgo npm package, the invite_new_user_to_org function fails to verify that an inviter’s role rank is at least equal to the role they are attempting to grant. This deficiency allows an authenticated org_member, which only has org.invite_user permission, to create invitations that elevate the new user to org_admin or org_billing_admin. When the new user accepts, the system binds the role using a Supabase service‑role key, circumventing database triggers designed to prevent role priority escalation. The result is full administrative control over the organization’s apps, channels, members, and billing. The flaw is categorized as CWE‑269, and the CVSS score of 8.6 indicates a high severity vulnerability.

Affected Systems

The vulnerability affects the Cap-go:capgo.app product, specifically the capgo npm package version 12.207.1 and earlier. The issue resides in the supabase/functions/_backend/private/invite_new_user_to_org.ts module of the package.

Risk and Exploitability

The high CVSS score and absence of mitigations in the database triggers mean that an attacker who can authenticate as a legitimate org_member can exploit this flaw. The likely attack vector is the POST /private/invite_new_user_to_org endpoint, which only requires org_invite_user permission. Because the exploit does not rely on external vulnerabilities and uses legitimate API calls, its feasibility is high. No KEV listing or EPSS value is available, but the severity alone warrants immediate attention.

Generated by OpenCVE AI on September 10, 2026 at 14:38 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update capgo to a version newer than 12.207.1 that includes the fix implemented in pull request #3096.
  • Restrict the org.invite_user permission to only those users who should be able to create high‑privilege invites, and regularly review role assignments.
  • Consider disabling the /private/invite_new_user_to_org endpoint temporarily until the patch is applied if rapid mitigation is required.

Generated by OpenCVE AI on September 10, 2026 at 14:38 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 10 Sep 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Thu, 10 Sep 2026 13:30:00 +0000

Type Values Removed Values Added
Description capgo.app (npm package `capgo`) through version 12.207.1 does not compare the caller's role rank against the requested role in the validateInvite() function of supabase/functions/_backend/private/invite_new_user_to_org.ts. The POST /private/invite_new_user_to_org endpoint only requires the org.update_user_roles permission for org_super_admin invitations, so an authenticated user holding only the org.invite_user permission (e.g., an org_member) can invite an external user as org_admin or org_billing_admin. When the invited account accepts the invitation via POST /private/accept_invitation, ensureOrgMembership creates the role binding using the Supabase service-role key, which bypasses the prevent_role_binding_priority_escalation and check_org_user_privileges database triggers. This allows privilege escalation resulting in full administrative control over the organization's apps, channels, members, and billing. The issue is addressed by pull request #3096, which compares the inviter's rank before permitting elevated invitations.
Title capgo.app through 12.207.1 Privilege Escalation via invite_new_user_to_org
Weaknesses CWE-269
References
Metrics cvssV3_1

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

cvssV4_0

{'score': 8.6, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-10T14:56:20.189Z

Reserved: 2026-09-10T11:23:56.027Z

Link: CVE-2026-88863

cve-icon Vulnrichment

Updated: 2026-09-10T14:18:31.064Z

cve-icon NVD

Status : Deferred

Published: 2026-09-10T14:17:11.970

Modified: 2026-09-10T15:17:56.793

Link: CVE-2026-88863

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-10T14:45:18Z

Weaknesses
  • CWE-269

    Improper Privilege Management