Skip to main content

Capgo CVE-2026-88861

| EUVDEUVD-2026-75411 HIGH
Authentication Bypass Using an Alternate Path or Channel (CWE-288)
2026-09-10 VulnCheck GHSA-3rq3-733w-v2c4
8.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain victim's Capgo account password
  2. Delivery
    Authenticate to Supabase, receive aal1 JWT
  3. Exploit
    Call privileged RBAC endpoint bypassing aal2 check
  4. Execution
    Mint persistent app_admin API key
  5. Persist
    Modify production OTA channel bundle
  6. Impact
    Mobile devices receive attacker-controlled app update

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Alternate path authentication
Exploitation Conditions

Exploitation requires: (1) the attacker must know the victim's valid Capgo account password - aal1 authentication with the password alone is sufficient to reach the vulnerable code path; (2) the target account must have at least one verified MFA factor registered, because accounts without any MFA factor have no aal2 boundary to bypass regardless; (3) the compromised account must hold RBAC permissions sufficient to create API keys or modify OTA channels (e.g., the app_admin role). Exploitation is limited to the direct RBAC code path (checkPermissionPg()/rbac_check_permission_direct()); the separate verify_mfa() control path correctly enforces aal2 and is not bypassed. No victim interaction is required after the attacker obtains the password, and the attack is fully remote over the network.

Impact

The CVSS 4.0 score of 8.7 reflects a serious network-exploitable vulnerability. However, two metric choices in the provided vector warrant scrutiny. First, PR:N understates the prerequisite: exploitation requires knowledge of the victim's account password, which in CVSS 3.1 terms is PR:L - the attacker possesses partial credentials (aal1) and exploits the missing aal2 enforcement. Second, the vector records VI:N and SI:N (no integrity impact) despite the advisory's explicit PoC demonstrating modification of production OTA channel configurations, a clear integrity violation with potential downstream impact on every mobile device polling that channel. Real-world risk is elevated for Capgo customers who treat MFA as a security boundary for OTA release management: a compromised production channel could push attacker-controlled app updates to potentially large end-user populations. The persistent API key vector is particularly concerning because it survives session termination, extending the attacker's foothold beyond the initial aal1 session. No KEV listing and no standalone exploit tool are present in the input data, but the advisory provides sufficient technical detail for skilled exploitation. With no patch available, the risk is ongoing for all deployed instances.

Exploit ScenarioDerived

An attacker who has obtained a Capgo account password through phishing or credential stuffing authenticates to the Supabase backend, receives an aal1 JWT, and - without completing any MFA challenge - calls the privileged RBAC-protected endpoint that routes through checkPermissionPg(), successfully minting a persistent app_admin API key. Using this long-lived key, the attacker modifies a production OTA channel to point to an attacker-controlled bundle, causing mobile devices polling that channel to receive a malicious application update while the original account holder remains unaware.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 10, 2026

Capgo's MFA enforcement is defeated by an authentication assurance level (AAL) mismatch across two distinct code paths: the Edge JWT middleware (foundJWT() in supabase/functions/_backend/utils/hono_middleware.ts) accepts Supabase JWTs without inspecting the aal claim, and the direct RBAC path (checkPermissionPg() calling public.rbac_check_permission_direct() in rbac.ts) authorizes operations by user ID alone, bypassing the assurance-level check that public.verify_mfa() correctly enforces. An attacker holding only the victim's account password can authenticate, receive an aal1 JWT, exercise privileged RBAC operations without triggering any MFA challenge, mint a persistent app_admin API key, and modify production OTA channel configurations - all of which survive logout of the original aal1 session. No patched version has been released; all versions of capgo.app are affected, and the advisory includes a validated proof-of-concept demonstrating bundle swap on a production channel.

RemediationAI

No vendor-released patch has been identified at time of analysis. The definitive fix requires two coordinated code changes: (1) the foundJWT() middleware in supabase/functions/_backend/utils/hono_middleware.ts must extract and validate the aal claim from the JWT, rejecting aal1 sessions for any operation that requires aal2; (2) checkPermission()/checkPermissionPg() in supabase/functions/_backend/utils/rbac.ts must propagate the session's assurance level to public.rbac_check_permission_direct() so it enforces the same aal2 requirement as public.verify_mfa(). Until a patch is available, operators should audit all existing app_admin API keys and rotate or revoke any created during aal1 sessions. Supabase Row Level Security policies can be configured to enforce aal2 at the database layer for sensitive tables as a defense-in-depth measure, reducing reliance on Edge Function middleware. Monitor for API key creation events from aal1 sessions via Supabase audit logs. Consult the GitHub Advisory GHSA-9435-5xw9-v29h for patch status updates.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Capgo is an Over-The-Air (OTA) update platform for Capacitor-based mobile applications, implemented as Supabase Edge Functions (Deno runtime, Hono framework). Supabase's GoTrue authentication system assigns Authentication Assurance Levels to JWTs: aal1 for password-only sessions, aal2 for sessions that additionally completed a registered MFA factor challenge. The aal claim is embedded in the signed JWT and is available for inspection at the middleware layer. CWE-288 (Authentication Bypass Using an Alternate Path or Channel) precisely describes the root cause: the privileged RBAC path (public.rbac_check_permission_direct()) represents an alternate authorization channel that omits the aal2 check present in the MFA-aware control path (public.verify_mfa()). The result is that any code path routing through the direct RBAC function bypasses the MFA boundary entirely, even for accounts with a verified MFA factor. The affected CPE wildcard cpe:2.3:a:cap-go:capgo.app:*:*:*:*:*:*:*:* confirms all published versions are vulnerable.

Know when Cap Go gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 8.7 HIGH
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
vuln.today AI 9.6 CRITICAL

PR:L because victim's account password is required; S:C and I:H because OTA channel modification delivers attacker-controlled updates to downstream mobile end-users.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:H/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

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.

Technical POC Analysis

CWE-288 - authentication bypass via an alternate path.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Capgo's MFA enforcement is completely bypassed by an authentication layer defect that allows attackers with only a user password to obtain administrative API access and modify production application update configurations without satisfying MFA requirements. Publicly available exploit code exists with documented production impact. All versions of capgo.app remain vulnerable; no patch has been released.

Business Impact: Severe
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) immediately revoke all app_admin API keys and implement a policy requiring re-approval for new keys; (2) restrict Capgo API network access via VPN and IP allowlisting; (3) implement real-time alerting on API key creation, privilege changes, and OTA channel updates; (4) require manual review and re-authentication before any privileged operation executes; (5) temporarily suspend scheduled OTA deployments and audit all channels for unauthorized modifications; (6) maintain detailed immutable audit logs of all access and changes.

Threat Intelligence Overview

EPSS Score
0.3%
Top 79% exploitable
Prevalence
Low
niche OTA update platform for Capacitor mobile app developers
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
Very High

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

Affected Products (CPE)CVE.org

cpe:2.3:a:cap-go:capgo.app:*:*:*:*:*:*:*:*

More in Cap Go

View all
CVE-2026-56081 CRITICAL
9.3 Jun 19

Account pre-registration hijack in Capgo before 12.128.2 lets a remote unauthenticated attacker claim an account under a

CVE-2026-88864 CRITICAL
9.3 Sep 10

Improper access control in Capgo (capgo.app) lets any holder of an ordinary full API key forge a trusted SSO provider by

CVE-2026-56073 CRITICAL
9.3 Jun 19

Authentication bypass in Capgo prior to version 12.128.2 lets attackers defeat email-based OTP verification by tampering

CVE-2026-88860 CRITICAL
9.3 Sep 10

Authorization bypass in Capgo (capgo.app), a live-update/OTA platform for Capacitor mobile apps, allows a de-provisioned

CVE-2026-56245 HIGH
8.8 Jun 24

Cross-tenant data poisoning in Supabase Capgo before 12.128.2 allows remote unauthenticated attackers to corrupt billing

CVE-2026-56248 HIGH
8.7 Jun 23

Unauthenticated denial of service in Cap-go capgo (capgo-backend) before 12.128.12 allows remote attackers to exhaust Po

CVE-2026-100622 HIGH
8.7 Sep 26

Unauthenticated retrieval of deleted over-the-air update bundles from capgo.app through version 12.129.0 is possible via

CVE-2026-100623 HIGH
8.7 Sep 26

Capgo's direct exposure of the public.org_users table through Supabase PostgREST lets an authenticated user who already

CVE-2026-100619 HIGH
8.7 Sep 26

Authenticated principals who hold an app-scoped upload/write/all API key with upload+ rights - or any user granted write

CVE-2026-100614 HIGH
8.7 Sep 26

Cross-tenant metadata modification in Capgo before 12.244.1 allows an authenticated attacker to alter image object metad

CVE-2026-88862 HIGH
8.7 Sep 10

Privilege escalation in the Capgo (capgo.app) backend through version 12.242.4 allows an authenticated API key holder to

CVE-2026-100615 HIGH
8.7 Sep 26

Privilege escalation in Capgo (capgo.app) before 12.267.1 allows a principal holding the apikey_manager role to rotate a

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy