CVE-2026-88864
nicheImproper Access Control in Capgo Lets Any Full API Key Forge SSO Provider Records
Capgo (capgo.app), a live-update service for Capacitor mobile apps, fails to restrict direct write access to its public.sso_providers table exposed through Supabase PostgREST (CWE-284). Anyone holding an ordinary Capgo full API key can insert a row with status='active' and enforce_sso=true, bypassing the intended backend provisioning path and its controls, including the Enterprise plan requirement, creation via the Supabase Management API, DNS TXT domain-ownership verification, the pending_verification to verified to active status transition, and trusted provider ID issuance. The forged row is trusted by SSO discovery and enforcement logic, including the unauthenticated login preflight endpoint /private/sso/check-domain, which then reports has_sso=true and enforce_sso=true for domains that were never verified. This lets an attacker assert attacker-controlled SSO enforcement for arbitrary domains and disrupt normal login flows, and all Capgo versions are affected. No public proof-of-concept or in-the-wild exploitation is known, and no patch was available at the time of the advisory.
What to do: No fixed version is available yet, so monitor the vendor for a patch and apply it promptly when released. Until then, treat Capgo full API keys as sensitive, limit who holds them and rotate any keys that may have been shared or leaked, and audit the public.sso_providers table (via Supabase) for unexpected rows with status='active' and enforce_sso=true for domains you did not verify; self-hosted operators can mitigate by restricting PostgREST write access to that table.
| Capgo (capgo.app) Capgo | all versions (no patch available at time of advisory) |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Capgo (capgo.app) fails to restrict direct write access to the public.sso_providers table exposed through Supabase PostgREST. A holder of an ordinary Capgo full API key can insert a row with status='active' and enforce_sso=true, bypassing the intended backend SSO provisioning route (supabase/functions/_backend/private/sso/providers.ts) and its controls: the Enterprise plan requirement, SSO provider creation via the Supabase Management API, DNS TXT domain-ownership verification, the pending_verification → verified → active status transition, and issuance of a trusted provider ID by Supabase Auth. The forged row is trusted by SSO discovery and enforcement logic, including the unauthenticated login preflight endpoint /private/sso/check-domain, which then reports {"has_sso": true, "enforce_sso": true} for domains that were never verified, allowing attacker-controlled SSO enforcement to be asserted for arbitrary domains and disrupting normal login. All versions are affected; at the time of the advisory no patch was available.
- Weakness
- CWE-284
- Vector
- CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
In the news0 stories
No ingested article mentions this CVE yet.