Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain public Supabase API key from distributed app
-
DeliverySend unauthenticated HTTP POST to PostgREST RPC endpoint
-
ExploitEnumerate valid org_ids via oracle response differential
-
ExecutionExtract cross-tenant usage telemetry (MAU, bandwidth, installs)
-
ImpactEnumerate app IDs for target organizations
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires possession of the Capgo Supabase public API key (sb_publishable_*), which is embedded in Capacitor mobile applications distributed to end users and is not treated as a secret credential. No account registration, authentication, org membership, or elevated privilege is needed beyond this key. The attacker must have network access to reach the Supabase PostgREST HTTP endpoint, consistent with the CVSS 4.0 AV:N metric for a publicly accessible SaaS platform. Exploitation is read-only: the vulnerability grants no write, delete, or code-execution capability. Practical exploitation is further shaped by the need to discover or enumerate valid org_id values, though the differential oracle response (metrics vs. empty array) makes this enumeration feasible without additional information. The affected functions were incorrectly granted to anon by default across all Capgo deployments before 12.128.2 - no non-default configuration is required to be vulnerable. |
| Impact | The CVSS 4.0 score of 6.9 accurately reflects a low-complexity, unauthenticated, network-accessible information disclosure with limited confidentiality impact (VC:L). The attack requires no privileges beyond a widely distributed public API key and no user interaction, making it trivially accessible to any motivated party. Real-world impact is bounded by the sensitivity of the disclosed data: usage telemetry (MAU, bandwidth, installs, gets) rather than credentials, PII, or application code. For multi-tenant SaaS operators, however, cross-tenant leakage carries compliance exposure and competitive intelligence risk that can exceed what the CVSS numeric score implies - particularly when combined with app-ID enumeration and org-existence confirmation. The absence of CISA KEV listing and the lack of identified public exploit code keep the near-term threat level moderate. EPSS data was not provided in the source intelligence and cannot be assessed. No conflicting signals exist between the CVSS vector and the description; both consistently indicate a network-accessible unauthenticated read-only disclosure. |
| Exploit ScenarioDerived | An attacker extracts the sb_publishable_* Supabase API key from a decompiled or publicly distributed Capgo-powered mobile application, then issues HTTP POST requests to the PostgREST RPC endpoint for get_app_metrics with sequentially or randomly guessed org_id values. The oracle behavior - valid organizations return telemetry rows, invalid ones return an empty array - enables systematic enumeration of tenant existence followed by bulk harvesting of MAU, bandwidth, and app-ID data across all organizations on the platform. No exploit code has been publicly identified, but the attack requires only standard HTTP tooling and the public API key. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 22, 2026
Cross-tenant information disclosure in Capgo (cap-go/capgo) before version 12.128.2 exposes per-organization usage telemetry to any caller holding the publicly distributed Supabase API key. Three PostgREST RPC functions - get_app_metrics, get_global_metrics, and get_total_metrics - are granted to the Supabase anon role without enforcing org membership or permission checks, allowing queries against arbitrary org_id values to return MAU, bandwidth, installs, and app IDs belonging to other tenants. No active exploitation has been confirmed (not in CISA KEV) and no public exploit code has been identified at time of analysis; a vendor-released patch exists at version 12.128.2.
RemediationAI
Upgrade Capgo to version 12.128.2 or later, which is the vendor-confirmed fix per GitHub Security Advisory GHSA-gfpq-vphf-6gcm. The patch is expected to revoke anon-role EXECUTE privileges on the affected functions and enforce caller-side org membership verification - either through Supabase Row Level Security policies or JWT claim validation within the function body. For self-hosted Capgo deployments that cannot immediately upgrade, a targeted compensating control is to manually revoke the anon role's EXECUTE privilege on get_app_metrics, get_global_metrics, and get_total_metrics in PostgreSQL (REVOKE EXECUTE ON FUNCTION ... FROM anon); note this will break all anonymous metric access until the patched version is deployed. Restricting inbound access to the Supabase PostgREST endpoint at the network layer (IP allowlisting, API gateway rate limiting) can reduce exposure surface but does not eliminate the underlying authorization flaw and should not be treated as a substitute for patching.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Capgo is a Capacitor-based live-update platform (CPE: cpe:2.3:a:cap-go:capgo:*:*:*:*:*:*:*:*) that uses Supabase as its backend infrastructure, which exposes PostgreSQL functions as HTTP REST endpoints via PostgREST. In Supabase's permission model, the anon role is issued a non-secret, publicly embeddable project key (sb_publishable_*) intended for anonymous, unauthenticated callers, subject to Row Level Security (RLS) policies. The root cause (CWE-200: Exposure of Sensitive Information to Unauthorized Actor) is that all three RPC functions accept an org_id parameter and return that organization's telemetry without verifying the caller is a member of or authorized for that organization. Because the functions are bound to the anon role, possession of the public API key - routinely distributed inside Capacitor mobile apps - is the sole prerequisite. An additional oracle effect arises from the differential response: a valid org_id returns metric rows while an invalid one returns an empty array, enabling systematic enumeration of tenant existence.
Know when Capgo 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
Network-accessible anon-role RPC using a public API key; impact limited to read-only telemetry disclosure with no integrity, availability, or scope-change effects.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
Cap-go capgo before 12.128.2 contains an authorization bypass in several Supabase PostgREST RPC functions (get_app_metrics, get_global_metrics, get_total_metrics) that are granted to the anon role without enforcing org membership or permission checks. An unauthenticated attacker using only the public Supabase API key (sb_publishable_*) can query arbitrary org_id values to disclose cross-tenant usage telemetry (MAU, bandwidth, installs, gets), enumerate app IDs for a target org, and determine org existence via an oracle (valid org returns metrics, invalid returns []).
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Account pre-registration hijack in Capgo before 12.128.2 lets a remote unauthenticated attacker claim an account under a
Cross-domain SSO account takeover in Capgo before 12.128.2 allows an attacker with enterprise org admin access and a mal
Authentication bypass in Capgo prior to version 12.128.2 lets attackers defeat email-based OTP verification by tampering
Authentication bypass in Capgo before 12.128.2 lets remote unauthenticated attackers mint arbitrary API keys by tamperin
Rate-limit bypass in Capgo versions prior to 12.128.2 lets remote unauthenticated attackers flood the channel_self endpo
Cross-tenant data poisoning in Supabase Capgo before 12.128.2 allows remote unauthenticated attackers to corrupt billing
Server-side privilege escalation in Capgo before 12.128.2 lets authenticated users holding build permissions abuse a pat
Unauthenticated information disclosure in Capgo before 12.128.2 lets remote attackers query the /functions/v1/channel_se
Unauthenticated information disclosure in Capgo before 12.128.2 exposes confidential business metrics through the Supaba
Unauthenticated denial of service in Cap-go capgo (capgo-backend) before 12.128.12 allows remote attackers to exhaust Po
Account takeover in Capgo before 12.128.2 stems from a password-change endpoint that omits current-password validation (
Information disclosure in Capgo (Capacitor live-update/OTA platform) before 12.128.2 lets unauthenticated callers abuse
EUVD-2026-38117
GHSA-g938-xgc8-q827
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB