Description
Capgo (capgo.app) contains an incomplete access-control/content-lock enforcement issue affecting all versions; no patch is available at the time of publication. The `enforce_encrypted_bundle_trigger` / `check_encrypted_bundle_on_insert` content lock in supabase/schemas/prod.sql exempts `app_versions` rows whose previous `storage_provider` is `r2-direct`, so delivery-critical columns (name, app_id, session_key, key_id, storage_provider, r2_path, external_url, checksum, manifest, native_packages) remain mutable while a row is in that state. Separately, the channel/version join used by the `/updates` endpoint (supabase/functions/_backend/utils/pg.ts) filters only deleted versions and does not exclude `r2-direct` versions, so such rows remain OTA-selectable. An attacker holding a Capgo API key with bundle write/upload permission can create or keep a bundle version in the `r2-direct` state, assign it to a channel, and then modify these fields via direct PostgREST requests, causing altered bundle metadata (for example checksum and session_key) to be served to devices through `/updates`. This bypasses the post-upload content immutability hardening added for a previous app_versions metadata-tampering issue.
Published: 2026-09-26
Score: 5.3 Medium
EPSS: n/a
KEV: No
Impact: Unauthorized modification of app bundle metadata and content leading to potential integrity violations
Action: Assess Impact
AI Analysis

Impact

Capgo’s access‑control enforcement is incomplete for bundle versions marked r2‑direct. Because the enforcement logic skips rows whose previous storage provider was r2‑direct, critical fields such as name, app_id, session_key, key_id, storage_provider, r2_path, external_url, checksum, manifest, and native_packages can be altered after the bundle is uploaded. An attacker who can write or upload bundles can leverage this flaw to tamper with bundle metadata, potentially redirecting devices to malicious or non‑intended content. This bypasses the hardening that was previously introduced to ensure app_version metadata immutability.

Affected Systems

All versions of Cap‑go, the Cap‑go web platform managing app bundles. The issue exists in the database schema (supabase/schemas/prod.sql) and the backend update endpoint (supabase/functions/_backend/utils/pg.ts). No specific version numbers are provided; the vulnerability is present across the reported product line.

Risk and Exploitability

The CVSS score of 5.3 indicates moderate severity. No EPSS value is available, and the vulnerability is not listed in CISA’s KEV catalog. The attack requires possession of a Cap‑go API key that has bundle write or upload permissions, which is a privilege often granted only to trusted developers. The flaw allows the attacker to alter bundle metadata via direct PostgREST requests, and the modified metadata will be served to devices through the standard /updates endpoint. Because the flaw exists in the content‑lock checks and channel/version join logic, no additional infrastructure or advanced exploits are needed to achieve the attack, but it is confined to accounts that already hold the necessary API permissions.

Generated by OpenCVE AI on September 26, 2026 at 15:21 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Restrict the use of API keys with bundle write or upload permissions to trusted personnel only; rotate those keys regularly
  • If possible, remove or temporarily disable r2‑direct storage provider usage until a fix is available
  • Implement logging and monitoring of PostgREST requests that modify app bundle metadata, and alert on unexpected changes to checksum, session_key, or manifest fields

Generated by OpenCVE AI on September 26, 2026 at 15:21 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) contains an incomplete access-control/content-lock enforcement issue affecting all versions; no patch is available at the time of publication. The `enforce_encrypted_bundle_trigger` / `check_encrypted_bundle_on_insert` content lock in supabase/schemas/prod.sql exempts `app_versions` rows whose previous `storage_provider` is `r2-direct`, so delivery-critical columns (name, app_id, session_key, key_id, storage_provider, r2_path, external_url, checksum, manifest, native_packages) remain mutable while a row is in that state. Separately, the channel/version join used by the `/updates` endpoint (supabase/functions/_backend/utils/pg.ts) filters only deleted versions and does not exclude `r2-direct` versions, so such rows remain OTA-selectable. An attacker holding a Capgo API key with bundle write/upload permission can create or keep a bundle version in the `r2-direct` state, assign it to a channel, and then modify these fields via direct PostgREST requests, causing altered bundle metadata (for example checksum and session_key) to be served to devices through `/updates`. This bypasses the post-upload content immutability hardening added for a previous app_versions metadata-tampering issue.
Title capgo.app Content-Lock Bypass via r2-direct Bundle Mutation
Weaknesses CWE-284
References
Metrics cvssV3_1

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

cvssV4_0

{'score': 5.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-26T13:23:00.259Z

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

Link: CVE-2026-100621

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

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

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

Link: CVE-2026-100621

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-26T15:30:08Z

Weaknesses