{"id":20643,"date":"2026-09-11T00:32:12","date_gmt":"2026-09-10T16:32:12","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-88863"},"modified":"2026-09-11T00:32:12","modified_gmt":"2026-09-10T16:32:12","slug":"cve-2026-88863","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-88863","title":{"rendered":"CVE-2026-88863 [HIGH] &#8211; capgo.app (npm package `capgo`) through version 12.207.1 does not compare the caller&#8217;s rol"},"content":{"rendered":"<p>capgo.app (npm package `capgo`) through version 12.207.1 does not compare the caller&#8217;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&#8217;s apps, channels, members, and billing. The issue is addressed by pull request #3096, which compares the inviter&#8217;s rank before permitting elevated invitations.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>capgo.app (npm package `capgo`) through version 12.207.1 does not compare the caller&#8217;s role rank against the requested role in the validateInvite() function of supabase\/functions\/_backend\/private\/invi<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-20643","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/20643","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=20643"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=20643"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=20643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}