Skip to main content

Capgo EUVDEUVD-2026-87713

| CVE-2026-100618 HIGH
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-09-26 VulnCheck GHSA-v4jw-rcpm-rf82
8.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Obtain app-limited write API key
  2. Delivery
    PUT /app/:id with out-of-scope icon path
  3. Exploit
    apps.icon_url stored without namespace check
  4. Execution
    on_app_update trigger invokes service-role worker
  5. Impact
    Worker rewrites private cross-org storage object

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

Requires an authenticated, app-limited WRITE API key for at least one app on the Capgo instance (per the advisory description), so this is not remote-unauthenticated despite the vendor's PR:N. The attacker uses the PUT /app/:id endpoint's user-controlled icon parameter with a path pointing outside the target app's own image namespace (org/{owner_org}/{app_id}/...). Exploitation depends on the on_app_update trigger and the cleanStoredImageMetadata() worker running with service-role (supabaseAdmin()) credentials, which is the default server-side design. What limits impact: the attacker cannot READ the targeted private object (no confidentiality leak), cannot supply arbitrary replacement content (the worker re-uploads the referenced object after metadata cleaning), and must already possess a scoped write API key on the platform.

Impact

This is a genuine cross-tenant authorization flaw (CWE-639 / confused-deputy) but the vendor's 8.7 CVSS 4.0 score materially overstates real-world severity. The vendor vector (AV:N/AC:L/PR:N/UI:N/VC:H/VI:N/VA:N) is internally inconsistent with its own description on two points: (1) it sets PR:N despite the description explicitly requiring 'an authenticated holder of an app-limited write API key' - this is NOT unauthenticated, so PR should be at least PR:L; (2) it sets VC:H (high confidentiality) even though the attack causes the privileged worker to REWRITE an out-of-scope object via cleanStoredImageMetadata() and never returns that object's contents to the attacker - the actual impact is INTEGRITY (tampering with another org's private storage object across the RLS authority boundary), not confidentiality. Corrected, this is a scope-changing integrity-only issue of bounded impact (the worker re-uploads the referenced object; the attacker does not control replacement content beyond metadata stripping/corruption). No EPSS score, no CISA KEV listing, and no public proof-of-concept are present in the provided data - exploitation signals are absent. Net: a real, valid confused-deputy privilege boundary violation worth patching, but not the near-critical priority the raw 8.7 implies; realistic severity is medium.

Exploit ScenarioDerived

An attacker who legitimately holds an app-limited write API key for one app issues PUT /app/:id with a crafted icon value pointing outside that app's own storage namespace (e.g. another organization's private logo path). Because the endpoint does not validate the path belongs to org/{owner_org}/{app_id}/..., the on_app_update trigger fires and the service-role worker downloads and re-uploads that out-of-scope private object with upsert:true, tampering with an object the API key could never touch directly under Supabase Storage RLS. 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.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 26, 2026

An authenticated holder of an app-limited write API key on Capgo (capgo.app) can abuse the PUT /app/:id endpoint's user-controlled icon field to make a privileged service-role worker rewrite a private storage object belonging to another tenant, such as an organization logo, that the API key cannot read or write directly under Supabase Storage RLS. The flaw is a cross-tenant authorization bypass (CWE-639 / confused deputy) rather than remote code execution: the attacker cannot read the targeted object, cannot supply arbitrary replacement content beyond the referenced object being re-uploaded with cleaned metadata, and must already possess a scoped write API key for at least one app on the instance. Our independent assessment scores this CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:L/A:N and considers the vendor's 8.7 (PR:N) rating materially overstated; no public exploit code and no confirmed active exploitation were identified at time of analysis.

RemediationAI

No vendor-released patch was identified at the time of the advisory, so administrators should treat mitigations as compensating controls until Capgo ships a fix and should monitor the vendor advisory at https://github.com/Cap-go/capgo.app/security/advisories/GHSA-669c-gwrr-hc53. The most direct control is server-side validation on PUT /app/:id that rejects any icon value whose resolved storage path does not fall within the caller's own namespace (org/{owner_org}/{app_id}/...), which eliminates the confused-deputy path entirely at the cost of a code change that must be re-applied on upgrade. As an interim measure, restrict or temporarily stop issuing app-limited write API keys that do not need the icon update capability, and rotate existing scoped keys knowing this reduces but does not remove exposure for keys that legitimately need metadata updates. Operators with control over the Supabase layer can also remove or replace the upsert: true behavior in cleanStoredImageMetadata(), or scope the worker's service-role path so it refuses to touch objects outside the triggering app's namespace; both changes carry the trade-off of needing careful testing to avoid breaking legitimate icon processing and organization-level asset updates. Because exploitation requires an authenticated key, tightening API key issuance, auditing and revoking unused keys, and alerting on cross-namespace writes to storage objects provide detection value even where the code cannot be changed immediately.

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

CVE-2026-100618 is an instance of CWE-639, Authorization Bypass Through User-Controlled Key, implemented here as a confused-deputy problem in Capgo's Supabase-backed app management API. The PUT /app/:id handler accepts a user-supplied icon value, normalizes it, and persists it into public.apps.icon_url without validating that the resulting storage path falls inside the caller's own image namespace (expected pattern org/{owner_org}/{app_id}/...). Because writes to apps.icon_url fire the on_app_update database trigger, a background worker reads record.icon_url and invokes cleanStoredImageMetadata(), which executes with service-role credentials via supabaseAdmin() and downloads then re-uploads the referenced storage object with upsert: true. Supabase Storage RLS governs direct client access, but service-role operations bypass those policies, so the worker becomes a privilege bridge: a low-privileged API key can influence an operation performed with full administrative storage rights. The referenced object is only rewritten after metadata cleaning, so the integrity impact is limited rather than an arbitrary-content overwrite. The CPE cpe:2.3:a:cap-go:capgo.app:*:*:*:*:*:*:*:* indicates every released version of the Capgo platform is in scope.

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

Requires an app-limited write API key so PR:L (not PR:N); privileged worker acts across the Storage RLS authority boundary so S:C; impact is limited integrity tampering of another org's object, no read-back (C:N) and no availability loss.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

DescriptionCVE.org

Capgo (capgo.app) is affected by an authorization flaw in the app icon update path. The PUT /app/:id endpoint accepts a user-controlled icon value, normalizes it, and stores it in public.apps.icon_url without verifying that the image path belongs to the target app's own image namespace (e.g. org/{owner_org}/{app_id}/...). Updating apps.icon_url fires the on_app_update trigger, whose worker reads record.icon_url and calls cleanStoredImageMetadata(), which runs with service-role credentials (supabaseAdmin()) and downloads and re-uploads the referenced storage object with upsert: true. As a result, an authenticated holder of an app-limited write API key can cause the privileged worker to rewrite an out-of-scope private image object (for example an organization logo) that the key cannot read or write directly under Supabase Storage RLS. All versions are affected; no patched version was available at the time of the advisory.

Technical POC Analysis

CWE-639 (Authorization Bypass Through User-Controlled Key), with the advisory also tagging CWE-862 (Missing Authorization).

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

CVE-2026-100618 affects Capgo (capgo.app), a multi-tenant over-the-air update platform, and allows a tenant already holding a scoped, app-limited write API key to abuse the PUT /app/:id endpoint so that a privileged service-role worker rewrites a storage object owned by a different tenant, such as another organization's logo. The exposure is a cross-tenant authorization bypass with limited integrity impact - attackers cannot read the targeted object or inject arbitrary replacement content - but it undermines the tenant-isolation guarantee that customers of a shared hosting platform depend on. Leadership should care because the flaw is reachable by any legitimate low-privilege API key holder on the instance, making it a trust and contractual-compliance issue for multi-tenant operators rather than a mass-exploitation emergency; no vendor patch is currently available.

Business Impact: Medium
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: revoke or rotate unnecessary app-limited write API keys and restrict key issuance to trusted tenants (application-layer least privilege); validate or block caller-supplied icon object references at the edge so they can only point at objects the calling tenant owns; harden Supabase Storage RLS and bucket ownership rules so the privileged service-role worker cannot rewrite objects outside the originating tenant; and enable logging/alerting on PUT /app/:id calls that cross tenant boundaries to detect abuse and support incident response.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Low
niche Capacitor OTA/live-update developer backend, limited production footprint
Data Quality
6 sources
Confidence: High

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.2%
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

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

CVE-2026-100617 HIGH
8.7 Sep 26

Authenticated administrators on Capgo (capgo.app) can grant channel-scoped permissions to non-member users because the p

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