---
id: CVE-2026-88864
title: >-
  Capgo (capgo.app) fails to restrict direct write access to the
  public.sso_providers table exposed through Supabase PostgREST
summary: >-
  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, bypassin…
severity: critical
cvss: 9.1
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:L'
cwe:
  - CWE-284
vendor: Cap-go
product: capgo.app
affected:
  - capgo.app
published: '2026-09-10'
updated: '2026-09-10'
sourceUpdated: '2026-09-10T15:17:57.103'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-88864'
references:
  - url: >-
      https://github.com/Cap-go/capgo.app/security/advisories/GHSA-xg7v-83qv-qfff
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/capgo-sso-provider-authentication-bypass-via-postgrest-direct-write
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/Cap-go/capgo.app/security/advisories/GHSA-xg7v-83qv-qfff
    label: 134c704f-9b21-4f2e-91b3-4a467353bcc0
tags:
  - nvd
  - cve.org
  - exploit-available
exploitAvailable: true
ssvc:
  exploitation: poc
  automatable: 'no'
  technicalImpact: total
  timestamp: '2026-09-10T14:57:19.234640Z'
ingestedAt: '2026-09-10T13:50:37.334Z'
epss: 0.00366
epssPercentile: 0.2772
---

## Overview

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.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
