CVE-2026-88863

capgo.app through 12.207.1 Privilege Escalation via invite_new_user_to_org

Published Sep 10, 2026 CVSS 4.0 · 8.6 High EPSS < 1% KEV · Not listed
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.

Analysis

AI-generated

Technical 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.

Remediation

No solution or workaround provided in the CVE record.

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 available
History
Type Values Removed Values Added
First Time appeared Cap-go
Cap-go cap-go
Vendors & Products Cap-go
Cap-go cap-go
Type Values Removed Values Added
Metrics ssvc

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

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'}

Weaknesses
  • CWE-269

    Improper Privilege Management

Sources

Status
PUBLISHED
Assigner
VulnCheck
Published
Updated
Sep 10, 2026, 2:56 PM
Reserved
Sep 10, 2026, 11:23 AM
Status
Deferred
Published
Sep 10, 2026, 2:17 PM
Modified
Sep 10, 2026, 3:17 PM