Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/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
Network RPC with public anon key warrants PR:N; cross-tenant write to another tenant's namespace constitutes a scope change (S:C) with low integrity-only impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Capgo before 12.128.2 contains an authorization bypass vulnerability in the public.upsert_version_meta SECURITY DEFINER function exposed via PostgREST RPC, allowing unauthenticated attackers to insert arbitrary rows into version_meta for any app_id. Attackers can exploit this by calling the RPC endpoint with a public anon key to poison storage metrics, causing persistent false data in dashboards and triggering incorrect alerts across victim applications.
AnalysisAI
Cross-tenant metrics poisoning in Capgo before 12.128.2 allows unauthenticated remote attackers to insert arbitrary rows into the version_meta table for any tenant's app_id by invoking the PostgREST RPC endpoint using only the public anonymous key. The root cause is a missing authorization check inside a SECURITY DEFINER PostgreSQL function, which executes with elevated definer privileges while accepting caller-supplied app_id values without ownership validation. Although no public exploit code or CISA KEV listing exists at time of analysis, the attack requires no credentials beyond the public anon key - typically embedded in distributed client applications - making the practical barrier to exploitation extremely low despite the moderate CVSS 4.0 score of 6.9.
Technical ContextAI
Capgo is a Capacitor-based live update platform built on a Supabase (PostgreSQL + PostgREST) backend. The vulnerability resides in the PostgreSQL function public.upsert_version_meta, declared with the SECURITY DEFINER attribute, causing it to execute under the definer's database role rather than the calling user's role. PostgREST automatically exposes this function as a REST RPC endpoint accessible via HTTP. CWE-862 (Missing Authorization) is the root cause: the function performs no row-level ownership check to confirm that the caller controls the supplied app_id, enabling any caller - including those presenting only the public anon role - to write arbitrary version_meta entries into another tenant's namespace. The affected product is identified by CPE cpe:2.3:a:capgo:capgo:*:*:*:*:*:*:*:*, covering all versions prior to 12.128.2.
RemediationAI
Upgrade Capgo to version 12.128.2 or later; this is the vendor-released patch confirmed by the GitHub Security Advisory GHSA-g4hx-x8gc-x6rw at https://github.com/Cap-go/capgo/security/advisories/GHSA-g4hx-x8gc-x6rw. If immediate upgrade is not possible, restrict unauthenticated access to the upsert_version_meta RPC endpoint at the PostgREST or API gateway layer - for example, by removing or revoking EXECUTE permission on the function from the anon role in PostgreSQL (REVOKE EXECUTE ON FUNCTION public.upsert_version_meta FROM anon;); note this will break any legitimate unauthenticated version-meta reporting flow and requires testing against Capgo client behavior. Additionally, enabling PostgREST audit logging on RPC calls and alerting on anomalous cross-tenant app_id patterns can support detection of exploitation attempts while a patch window is arranged. The VulnCheck advisory at https://www.vulncheck.com/advisories/capgo-unauthenticated-cross-tenant-metrics-poisoning-via-upsert-version-meta-rpc provides supplementary technical detail.
Authentication bypass in Capgo before 12.128.2 lets remote unauthenticated attackers mint arbitrary API keys by tamperin
Cross-domain SSO account takeover in Capgo before 12.128.2 allows an attacker with enterprise org admin access and a mal
Account pre-registration hijack in Capgo before 12.128.2 lets a remote unauthenticated attacker claim an account under a
Authentication bypass in Capgo prior to version 12.128.2 lets attackers defeat email-based OTP verification by tampering
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
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
Unauthenticated information disclosure in Capgo before 12.128.2 lets remote attackers read organization RBAC role bindin
Cross-tenant authorization bypass in Capgo before 12.128.2 lets authenticated users impersonate another tenant's limited
Same weakness CWE-862 – Missing Authorization
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-38099
GHSA-5495-g4j9-gjwq