Description
Capgo (Cap-go/capgo.app) contains an authentication bypass affecting all versions (no patched version available at time of publication). The Edge authorization path allows a password-only Supabase aal1 session to exercise privileged RBAC permissions even when the account has a verified MFA factor that has not been used for the session: the Edge JWT middleware (foundJWT() in supabase/functions/_backend/utils/hono_middleware.ts) accepts the JWT without validating its assurance level, and the direct RBAC path (checkPermission()/checkPermissionPg() in supabase/functions/_backend/utils/rbac.ts calling public.rbac_check_permission_direct()) authorizes by user ID without passing or checking the session aal, unlike the public.verify_mfa() control which correctly requires aal2. An attacker who knows only the victim's password can therefore authenticate, mint a persistent app-scoped app_admin API key that remains valid after the aal1 session is logged out, and perform privileged operations such as modifying production OTA channel configurations (validated by changing a public production channel from bundle 1.0.0 to 1.0.1), defeating the protection provided by MFA.
Published: 2026-09-10
Score: 8.7 High
EPSS: n/a
KEV: No
Impact: Privilege Escalation via Authentication Bypass
Action: Mitigate
AI Analysis

Impact

Capgo contains an authentication bypass that allows an attacker with only a victim’s password to authenticate with an aal1 session and then exercise privileged RBAC permissions, including minting a persistent admin API key. This bypass circumvents MFA protection and permits the attacker to modify production OTA channel configurations and other privileged operations. The weakness lies in the failure of the Edge JWT middleware to validate the session assurance level and the direct RBAC check that authorizes by user ID without inspecting the session aal, a typical example of authentication bypass (CWE‑288).

Affected Systems

All Capgo / Cap-go:capgo.app versions are affected. The vendor released no patched version at the time of this advisory. The vulnerability impacts the Edge authorization path within the Supabase backend functions, specifically the JWT middleware (foundJWT) and the RBAC utilities (checkPermission / checkPermissionPg).

Risk and Exploitability

The CVSS score of 8.7 indicates high severity. EPSS is not available, and the vulnerability is not listed in CISA KEV. An attacker can exploit this flaw remotely by sending authenticated requests with an aal1 session under the victim’s password. Because the middleware does not verify the assurance level, the attacker can obtain privileged roles and create long‑lived API keys that survive session logout, enabling continued unauthorized access.

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

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Restrict privileged RBAC endpoints to require MFA-enforced sessions; update the JWT middleware to validate the session’s assurance level and reject aal1 requests for privileged operations.
  • Eliminate the use of direct RBAC permission checks that bypass session verification; modify checkPermission() to enforce session level checks or redirect privileged calls to the verify_mfa() pathway.
  • If a patch is not available, block or disable the capability to mint app‑scoped admin API keys via the Edge authorization path until the issue is resolved, and require explicit MFA approval for any operation that grants new API keys.

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

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

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

Type Values Removed Values Added
Description Capgo (Cap-go/capgo.app) contains an authentication bypass affecting all versions (no patched version available at time of publication). The Edge authorization path allows a password-only Supabase aal1 session to exercise privileged RBAC permissions even when the account has a verified MFA factor that has not been used for the session: the Edge JWT middleware (foundJWT() in supabase/functions/_backend/utils/hono_middleware.ts) accepts the JWT without validating its assurance level, and the direct RBAC path (checkPermission()/checkPermissionPg() in supabase/functions/_backend/utils/rbac.ts calling public.rbac_check_permission_direct()) authorizes by user ID without passing or checking the session aal, unlike the public.verify_mfa() control which correctly requires aal2. An attacker who knows only the victim's password can therefore authenticate, mint a persistent app-scoped app_admin API key that remains valid after the aal1 session is logged out, and perform privileged operations such as modifying production OTA channel configurations (validated by changing a public production channel from bundle 1.0.0 to 1.0.1), defeating the protection provided by MFA.
Title Capgo AAL1 Session MFA Bypass via Direct RBAC Authorization
Weaknesses CWE-288
References
Metrics cvssV3_1

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

cvssV4_0

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


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-10T13:05:18.415Z

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

Link: CVE-2026-88861

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

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

Modified: 2026-09-10T15:13:07.090

Link: CVE-2026-88861

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

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

Weaknesses
  • CWE-288

    Authentication Bypass Using an Alternate Path or Channel