ZeroHour

CVE-2026-88864

niche

Improper Access Control in Capgo Lets Any Full API Key Forge SSO Provider Records

CVSS 4.0
9.3 critical
EPSS
Published
()
Modified
AI analysis

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.

Affected
Capgo (capgo.app) Capgoall versions (no patch available at time of advisory)
Estimated exposure
nichelikely on the order of thousands of developer accounts/teams (single hosted SaaS; no public counts provided) — Capgo is a specialized OTA-update SaaS for Capacitor mobile-app developers with no published customer or install counts in the provided data, so exposure is bounded by its comparatively small hosted customer base.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

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 news

No ingested article mentions this CVE yet.