Skip to main content

capgo.app EUVDEUVD-2026-87711

| CVE-2026-100616 HIGH
Incorrect Authorization (CWE-863)
2026-09-26 VulnCheck GHSA-455x-98vm-63r8
7.0
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as org admin (org.update_settings)
  2. Delivery
    Send direct PostgREST UPDATE to public.orgs
  3. Exploit
    RLS UPDATE policy permits full-row write
  4. Execution
    Null or corrupt customer_id billing pointer
  5. Impact
    Plan/billing checks fail, org downgraded to unpaid/no-plan

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an authenticated user who is an organization admin holding the org.update_settings permission but lacking org.update_billing, and requires the attacker to bypass the official organization/put.ts endpoint by issuing an UPDATE directly to the Supabase PostgREST API. The vulnerability exists because the row-level security UPDATE policy on public.orgs authorizes a full-row write instead of restricting to the allowlisted settings columns, so customer_id is writable. Limiting factors: exploitation is confined to the attacker's own organization, needs pre-existing admin-level credentials (PR:H), causes no data disclosure, and affects only billing/plan state (nulling/corrupting the Stripe pointer) rather than the broader system.

Impact

This is a genuine but modest-severity broken-authorization (CWE-863) flaw, not a high-urgency threat. The vendor CVSS 4.0 vector (CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:N/VI:L/VA:H) scores 7.0, but that HIGH rating is driven almost entirely by VA:H, which I assess as generous: the actual effect is corruption of a single billing-pointer column (customer_id) within the attacker's OWN organization, degrading paid-plan state rather than causing broad availability loss. PR:H is correct and important - exploitation requires an authenticated organization admin already holding org.update_settings, so this is an insider privilege-separation / separation-of-duties bypass (an admin acting beyond org.update_billing), not remote-unauthenticated compromise. No confidentiality impact (VC:N/C:N). There is NO EPSS score, NO CISA KEV listing, and no public exploit identified at time of analysis; exploitation requires only a direct PostgREST call, so it is technically trivial for someone who already has admin access, but the trust/privilege prerequisite sharply limits real-world risk. Note the input Tag 'Authentication Bypass' conflicts with CWE-863 and the description - this is an authorization/access-control failure, not authentication bypass. Net: real defect worth patching for billing-integrity and separation-of-duties, but low operational priority given PR:H, single-org scope, and absence of exploitation signals.

Exploit ScenarioDerived

An authenticated organization admin in a Capgo tenant who holds org.update_settings but NOT org.update_billing sends an UPDATE request directly to the Supabase PostgREST API against public.orgs, bypassing the official put.ts endpoint's field allowlist, and nulls or corrupts the customer_id Stripe pointer. Because plan/billing checks trust orgs.customer_id, the organization silently drops from its valid paid-plan state to unpaid/no-plan behavior. No public exploit code is identified, but the attack is a single direct API call requiring no special tooling.

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

Authenticated organization admins in capgo.app can corrupt the organization's Stripe billing pointer (customer_id) by sending a direct UPDATE to the Supabase PostgREST API, bypassing the official organization update endpoint that excludes this column. The flaw requires an org admin with org.update_settings but without org.update_billing, and only affects the attacker's own organization's plan/billing state, not broader system data. No vendor patch was available at the time of the advisory, and no public exploit code has been identified.

RemediationAI

No vendor-released patch was identified at time of analysis. Until a fix is available, self-hosted deployments should modify the row-level security (RLS) UPDATE policy on public.orgs to restrict which columns can be modified-for example, by replacing the permissive UPDATE policy with a column-level policy or a BEFORE UPDATE trigger that prevents changes to customer_id unless the requester holds org.update_billing permission. Alternatively, revoke direct UPDATE permission on the orgs table from the authenticated role and force all updates through the official endpoint. These controls may break legitimate billing updates if not scoped carefully; test in a staging environment first. Monitor Supabase audit logs for unexpected changes to customer_id. Administrators should follow the vendor advisory at https://github.com/Cap-go/capgo.app/security/advisories/GHSA-qp5h-v7x3-53cq for a patched version.

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.app is an over-the-air (OTA) update platform for Capacitor-based mobile apps. The underlying data layer is Supabase, which exposes PostgreSQL via PostgREST, a RESTful API that maps HTTP requests to database operations. The vulnerability is CWE-863 (Incorrect Authorization): the row-level security (RLS) UPDATE policy on the public.orgs table authorizes a full-row write for any org admin holding org.update_settings, rather than restricting the write to the allowlisted settings columns. Although the official endpoint (supabase/functions/_backend/public/organization/put.ts) explicitly excludes customer_id from its allowlist, and the private Stripe billing route requires org.update_billing, an attacker can still mutate customer_id by issuing an UPDATE directly to PostgREST. The affected CPE is cpe:2.3:a:cap-go:capgo.app:*:*:*:*:*:*:*:* (all versions prior to a fix).

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 7.0 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N
vuln.today AI 3.8 LOW

PR:H because an org admin role is required; C:N as no data is exposed; I:L for billing-pointer corruption and A:L for the resulting paid-plan degradation limited to one org.

3.1 AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:L/A:L
4.0 AV:N/AC:L/AT:N/PR:H/UI:N/VC:N/VI:L/VA:L/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
None
Vulnerable system: Integrity
Low
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

capgo.app is an over-the-air update platform for Capacitor apps. In all versions prior to a fix, the row-level security UPDATE policy on the public.orgs table permits an organization admin (a user holding org.update_settings) to update the entire row, including the internal billing pointer column customer_id. The official organization update endpoint (supabase/functions/_backend/public/organization/put.ts) allowlists only a small set of editable settings fields and excludes customer_id, and the private Stripe billing route separately requires the org.update_billing permission. By sending an update directly to Supabase PostgREST, an authenticated org admin without org.update_billing can null or corrupt the organization's Stripe customer pointer, causing plan and billing checks that trust orgs.customer_id to fail and moving the organization from a valid paid plan state to unpaid/no-plan behavior. At the time of the advisory no patched version was available.

Technical POC Analysis

Evidence base: GitHub advisory GHSA-qp5h-v7x3-53cq.

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

A privilege-boundary flaw in capgo.app, a live-update platform for Capacitor mobile apps, allows organization administrators to alter their organization's Stripe billing pointer through a direct database API call rather than the sanctioned update endpoint. The exposure is contained to the acting administrator's own organization - billing and plan state can be corrupted or misdirected, but no other tenants' data or platform-wide systems are reachable. Leadership should care because billing integrity and revenue reconciliation for affected accounts may be silently wrong, and because the flaw signals a gap in how column-level permissions are enforced across the platform's API surface.

Business Impact: Medium
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: enforce row-level security and column-level grants on the organizations table so customer_id cannot be modified via direct PostgREST UPDATE; restrict changes to customer_id to the official organization update endpoint through a server-side trigger or validation rule; revoke org.update_settings from administrators who do not also hold org.update_billing; monitor and alert on direct UPDATE calls to the organizations table; and reconcile organizations.customer_id values against Stripe records on a recurring basis to detect tampering.

Threat Intelligence Overview

EPSS Score
0.3%
Top 83% exploitable
Prevalence
Low
niche Capacitor over-the-air update platform, limited developer-tool 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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
Medium
Technical Impact
Partial

Priority Score

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

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