Skip to main content

Capgo CVE-2026-100612

| EUVDEUVD-2026-87707 HIGH
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-09-26 VulnCheck GHSA-553q-8vcm-9vxv
8.6
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Obtain org_admin in SSO-enabled org
  2. Delivery
    PATCH provider_id via PostgREST to attacker IdP
  3. Exploit
    Authenticate asserting owner's email
  4. Execution
    Merge attaches attacker identity, nulls owner password
  5. Impact
    Account takeover and owner lockout

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

Exploitation requires that the attacker already holds the org_admin tier permission (org.update_settings) within the target organization AND that the organization has an active SSO provider configured. The concrete flaw is that migration 20260826100000_sso_providers_block_direct_active_insert.sql's BEFORE UPDATE guard freezes only dns_verified_at, domain, status and enforce_sso - leaving provider_id (plus metadata_url and attribute_mapping) writable - while the table's ALL grant to the anon/authenticated roles and the row-scoped RLS policy allow_org_admins_update_sso_providers impose no column-level restriction, so an org_admin can PATCH provider_id over PostgREST. Limiting factors: no unauthenticated path (PR:H - a valid org_admin account is mandatory), the org must have SSO actively configured, and the attacker must control an IdP able to assert the owner's email; there is no patched version, so mitigation requires column-level grants/RLS or removing the ALL grant.

Impact

The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H, score 8.6) is internally consistent with the description: exploitation is fully network-reachable over PostgREST with low complexity, but is gated behind PR:H - the attacker must already hold the org_admin tier permission (org.update_settings). This is a genuine impact chain (org_admin → org owner/super_admin account takeover) rather than a high-CVSS-but-hollow issue, but the PR:H prerequisite plus the requirement that the target org has an active SSO provider configured materially narrows the real-world attacker population to insiders/compromised admins within SSO-enabled organizations. No EPSS score, CISA KEV listing, or public POC is present in the provided data, so there is no evidence of active or automated exploitation - this is a targeted, precondition-heavy escalation, not a mass-exploitable flaw. The one signal that raises urgency is that no patched version is available (through 12.261.0), leaving affected orgs with no clean remediation. Note the tag 'Authentication Bypass' vs CWE-639 (authorization/IDOR): the root cause is missing column-level authorization, though the ultimate effect is indeed an SSO authentication bypass, so both framings are defensible.

Exploit ScenarioDerived

An attacker who already holds org_admin in a Capgo organization that has an active SSO provider issues a PostgREST PATCH against public.sso_providers, rewriting the still-writable provider_id to an identity provider they control (the BEFORE UPDATE guard freezes dns_verified_at/domain/status/enforce_sso but not provider_id). They then authenticate through their own IdP while asserting the org owner's email; the server-side provider match succeeds and the merge routine attaches the attacker's identity to the owner account, nulls its password, and deletes the owner's other identities and sessions. No public exploit code is identified at time of analysis.

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 26, 2026

Vertical privilege escalation and account takeover in Capgo (capgo.app) through 12.261.0: an authenticated attacker who already holds the org_admin tier permission org.update_settings can rewrite the provider_id column of a public.sso_providers row over PostgREST and point the organization's email-domain trust anchor at an identity provider they control, after which the server-side SSO merge routine binds the attacker's identity to the legitimate org owner account, nulls that account's password, and deletes its other identities and sessions. The impact is full owner/super_admin takeover plus lockout of the real owner, although exploitation is gated on the target organization having an active SSO provider configured and on the attacker already possessing org_admin in that organization; no public exploit code was identified at time of analysis and there is no CISA KEV entry. The incomplete nature of the fix (a BEFORE UPDATE guard that freezes dns_verified_at, domain, status and enforce_sso but leaves provider_id, metadata_url and attribute_mapping writable under a table-wide ALL grant with only row-scoped RLS) makes this a durable privilege-escalation path rather than a one-off misconfiguration.

RemediationAI

No vendor-released patch is identified at time of analysis (“no patched version is available”), so mitigation is configuration- and code-level until Capgo ships one. The highest-value fix is to remove the table-wide ALL grant on public.sso_providers from the anon and authenticated roles and replace it with column-level grants that allow UPDATE only on columns that are legitimately user-editable, explicitly excluding provider_id, metadata_url and attribute_mapping; this does not require client changes for read paths but will break any legitimate org_admin self-service SSO reconfiguration flow that depends on writing provider_id, which must then be moved to a privileged server-side/admin path. In parallel, extend the BEFORE UPDATE guard trigger enforce_sso_provider_client_update_guard() to also freeze provider_id, metadata_url and attribute_mapping, and either add a column-scoped RLS policy or a CHECK-style assertion so the row-scoped policy allow_org_admins_update_sso_providers cannot authorize changes to those keys; the trade-off is that any intended SSO provider rotation must go through a migration or service role. Because exploitation requires an existing org_admin (org.update_settings), treat that tier as highly trusted, review the current org_admin membership list, and audit sso_providers rows and identity-merge events for unexpected provider_id changes, password nulls, or mass identity/session deletions; rotate or force re-authentication for affected owners and verify owner credentials, identities and sessions are intact before restoring service. Given the account-takeover and lockout potential, monitoring PostgREST PATCH traffic to public.sso_providers for provider_id modifications is a reasonable detection control, and the vendor advisory at https://github.com/Cap-go/capgo.app/security/advisories/GHSA-jpjp-v827-j4gc should be tracked for the eventual patched release, with the VulnCheck advisory at https://www.vulncheck.com/advisories/capgo-sso-provider-id-authentication-bypass-via-incomplete-migration as a secondary reference.

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's SSO configuration is stored in the PostgreSQL table public.sso_providers, which is exposed to the Supabase/PostgREST API surface and covered by CPE cpe:2.3:a:cap-go:capgo.app:*:*:*:*:*:*:*:* (all versions through 12.261.0). The flaw maps to CWE-639 (Authorization Bypass Through User-Controlled Key): the security decision about which identity provider is trusted for a given email domain is derived from a key, provider_id, that the attacker can modify. Migration 20260826100000_sso_providers_block_direct_active_insert.sql installs the trigger function enforce_sso_provider_client_update_guard() as a BEFORE UPDATE guard that freezes only dns_verified_at, domain, status and enforce_sso, deliberately (but incompletely) protecting the columns that determine whether a domain-to-IdP binding is active; provider_id, metadata_url and attribute_mapping are left writable. The table is granted ALL to the anon and authenticated database roles with no column-level restrictions, and the PostgreSQL row-level security policy allow_org_admins_update_sso_providers constrains only which row an org_admin may update, not which columns - so an UPDATE issued through PostgREST as an org_admin passes both layers. Because provider_id is the trust anchor that binds an email domain to an authorized IdP, redirecting it to an attacker-controlled IdP lets the attacker authenticate asserting the org owner's email; the server-side provider match succeeds and the merge routine attaches the attacker's SSO identity to the existing owner record, nulls the password and removes other identities and sessions. Reachability is fully network-based over PostgREST with low attack complexity and no user interaction, but the CVSS 4.0 vector reports PR:H, i.e. a valid org_admin account with org.update_settings is mandatory and there is no unauthenticated path.

Know when PostgreSQL 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.6 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.2 HIGH

Network-reachable via PostgREST with low complexity, but requires pre-held org_admin privilege (PR:H); full account takeover yields C:H/I:H and owner lockout gives A:H.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

DescriptionCVE.org

Capgo (capgo.app) through version 12.261.0 contains an incomplete access-control fix for the public.sso_providers table. Migration 20260826100000_sso_providers_block_direct_active_insert.sql installs a BEFORE UPDATE guard (enforce_sso_provider_client_update_guard()) that freezes only the dns_verified_at, domain, status and enforce_sso columns; provider_id (as well as metadata_url and attribute_mapping) is left writable. Because the table is granted ALL to the anon and authenticated roles with no column-level restriction, and PostgreSQL row-level security policies such as allow_org_admins_update_sso_providers constrain only which row may be updated and not which columns, a user holding the org_admin tier permission org.update_settings can PATCH provider_id over PostgREST to an identity provider under their control. Since provider_id is the trust anchor binding an email domain to an authorized IdP, the attacker can then authenticate through their own IdP while asserting the org owner's email; the server-side provider match succeeds and the merge routine attaches the attacker's SSO identity to the existing owner account, nulls its password, and deletes its other identities and sessions. This results in vertical privilege escalation from org_admin to org owner/super_admin, account takeover, and lockout of the legitimate owner. Exploitation requires that the target organization has an active SSO provider configured and that the attacker already holds org_admin in that organization. No patched version is available.

Technical POC Analysis

CWE-639 (Authorization Bypass Through User-Controlled Key): ssoproviders.providerid is the sole trust anchor binding an email domain to an authorized IdP, but it is client-writable.

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 (capgo.app) versions through 12.261.0 are affected by a high-severity privilege escalation vulnerability that enables an attacker with existing org_admin permissions to take over the organization owner account, resulting in full control and lockout of legitimate owners. This impacts organizations using Capgo with an active SSO provider, potentially leading to unauthorized access to sensitive data and operational disruption. Leadership should prioritize mitigation due to the risk of complete account takeover and loss of administrative control.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include restricting org_admin role assignments, auditing sso_providers configurations, enforcing MFA, and monitoring for anomalous SSO activity.

Threat Intelligence Overview

EPSS Score
0.3%
Top 76% exploitable
Prevalence
Low
Niche developer SaaS for Capacitor OTA app updates, limited production footprint
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

43
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +43
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.

Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.

Affected Products (CPE)CVE.org

cpe:2.3:a:cap-go:capgo.app:*:*:*:*:*:*:*:*
CVE-2025-1094 HIGH POC
8.1 Feb 13

PostgreSQL libpq functions PQescapeLiteral(), PQescapeIdentifier(), PQescapeString(), and PQescapeStringConn() improperl

CVE-2024-55964 CRITICAL POC
9.8 Mar 26

An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl

CVE-2013-1899 MEDIUM POC
6.5 Apr 04

Argument injection vulnerability in PostgreSQL 9.2.x before 9.2.4, 9.1.x before 9.1.9, and 9.0.x before 9.0.13 allows re

CVE-2026-20253 CRITICAL POC
9.8 Jun 10

Unauthenticated arbitrary file write in Splunk Enterprise (below 10.2.4 and 10.0.7) and Splunk Cloud Platform (below 10.

CVE-2026-9586 CRITICAL POC
9.3 Jul 17

Unauthenticated SQL injection in Sangoma Switchvox SMB Edition 8.3 (build 104997) lets remote attackers execute arbitrar

CVE-2017-7546 CRITICAL
9.8 Aug 16

PostgreSQL versions before 9.2.22, 9.3.18, 9.4.13, 9.5.8 and 9.6.4 are vulnerable to incorrect authentication flaw allow

CVE-2015-1352 MEDIUM POC
5.0 Mar 30

The build_tablename function in pgsql.c in the PostgreSQL (aka pgsql) extension in PHP through 5.6.7 does not validate t

CVE-2024-10553 CRITICAL POC
9.8 Mar 20

A vulnerability in the h2oai/h2o-3 REST API versions 3.46.0.4 allows unauthenticated remote attackers to execute arbitra

CVE-2019-9193 HIGH POC
7.2 Apr 01

In PostgreSQL 9.3 through 11.2, the "COPY TO/FROM PROGRAM" function allows superusers and users in the 'pg_execute_serve

CVE-2026-40887 CRITICAL POC
9.1 Apr 14

Unauthenticated SQL injection in Vendure Shop API allows remote attackers to execute arbitrary SQL commands against the

CVE-2022-24760 CRITICAL POC
10.0 Mar 12

Parse Server is an open source http web server backend. Rated critical severity (CVSS 10.0), this vulnerability is remot

CVE-2025-56157 CRITICAL POC
9.8 Dec 18

Hard-coded default PostgreSQL credentials shipped in the docker-compose.yaml of langgenius Dify through version 1.5.1 al

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