Description
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.
Published: 2026-09-26
Score: 8.7 High
EPSS: n/a
KEV: No
Impact: Privilege Escalation
Action: Assess Impact
AI Analysis

Impact

Capgo (capgo.app) contains an authorization flaw in the 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. When the icon is updated the on_app_update trigger fires, and a worker running with service‑role credentials (supabaseAdmin()) downloads and re‑uploads the referenced storage object with upsert: true. An authenticated holder of an app‑limited write API key can therefore cause the privileged worker to rewrite an out‑of‑scope private image object, such as an organization logo, that the key cannot normally read or write under Supabase Storage RLS. This vulnerability permits privilege escalation, allowing an attacker to modify data beyond their allowed scope.

Affected Systems

All versions of Capgo (capgo.app) are affected. The vulnerability applies to every released instance of the platform, regardless of version, as no patched release was available at the time the advisory was published.

Risk and Exploitability

The CVSS score of 8.7 classifies this as a high‑severity flaw, and the lack of an existing patch increases urgency. While the EPSS score is not available, the vulnerability relies on an authenticated app‑limited write API key, a credential that many users possess. The privileged worker executes with elevated service‑role permissions, making the escalation unimpeded and straightforward once the icon field is supplied. Because the affected objects include private images that are normally protected by Supabase RLS, an attacker can subvert those controls with relative ease. The vulnerability is not listed in the CISA KEV catalog, but its high severity and the ease of exploitation warrant prompt action.

Generated by OpenCVE AI on September 26, 2026 at 16:31 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Deploy a vendor‑supplied patch for Capgo as soon as available.
  • Revise app‑limited write API key scopes to remove permissions for the icon update endpoint.
  • Enforce stricter validation of icon_url values before storage or trigger execution, ensuring the path belongs to the intended app namespace, or adjust Supabase Storage RLS to prohibit rewriting of objects outside the org/app namespace by service‑role workers.
  • Monitor storage change logs for anomalous icon updates and investigate immediately.

Generated by OpenCVE AI on September 26, 2026 at 16:31 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 26 Sep 2026 13:30:00 +0000

Type Values Removed Values Added
Description 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.
Title Capgo App Icon Update Privilege Escalation via Service-Role Worker
Weaknesses CWE-639
References
Metrics cvssV3_1

{'score': 8.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:N'}

cvssV4_0

{'score': 8.7, 'vector': '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'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-26T13:22:58.212Z

Reserved: 2026-09-26T02:31:07.602Z

Link: CVE-2026-100618

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-26T14:16:42.600

Modified: 2026-09-26T14:16:42.600

Link: CVE-2026-100618

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-26T16:45:14Z

Weaknesses
  • CWE-639

    Authorization Bypass Through User-Controlled Key