VYPR
Unrated severityNVD Advisory· Published Jun 22, 2026

Capgo - Deleted Bundle Selection via Missing Deletion Filter in /updates Endpoint

CVE-2026-56314

Description

Capgo before 12.128.12 fails to filter deleted app versions when joining channels during /updates resolution, allowing deleted bundles to remain selectable. Attackers can continue deploying deleted bundles to devices by exploiting the missing app_versions.deleted filter in channel version joins.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

Affected products

1

Patches

Vulnerability mechanics

Root cause

"Missing `app_versions.deleted` filter in channel version joins allows deleted bundles to remain selectable by /updates."

Attack vector

An authenticated app user deletes a bundle through the normal backend API, which only sets `app_versions.deleted = true` without detaching the channel reference. The `/updates` resolution logic joins `channels.version = app_versions.id` without filtering `app_versions.deleted = false`, so the deleted bundle remains eligible for update selection. As long as the deleted bundle still has a deliverable source (e.g., `external_url`), devices querying `/updates` continue to receive that bundle. This allows an attacker who can delete a bundle to inadvertently or maliciously keep it deployable to devices on any channel that still references it [ref_id=1].

What the fix does

The advisory does not include a published patch diff. It identifies that the fix must add a filter for `app_versions.deleted = false` in the `/updates` selection queries at `supabase/functions/_backend/utils/pg.ts:354-365` (device override path) and `:388-409` (default channel path). Without this filter, deleted bundles remain joinable and resolvable. The advisory also notes that the delete flow at `supabase/functions/_backend/public/bundle/delete.ts:27-36` should either clear the channel reference or reject deletion when a channel still points to the version [ref_id=1].

Preconditions

  • authAttacker must have an authenticated app user account capable of deleting bundles via the backend API
  • configA channel must still reference the deleted bundle's app_versions.id
  • inputThe deleted bundle must have a deliverable source (external_url, r2_path, or manifest entries)

Generated on Jun 23, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

2

News mentions

0

No linked articles in our index yet.