/

CVE-2026-100618

Severity:

HIGH RISK

(8.5)

Broken Object Level Authorization (CWE-639) in Capgo

CVE-2026-100618

Deferred

Vulnerability type

Category:

Broken Object Level Authorization

CWE:

CWE-639

Impact:

Unauthorized modification of private storage objects

Severity:

HIGH RISK

(8.5)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Capgo contains an authorization flaw in its application icon update path, where an authenticated app-limited writer can associate an app with an image outside its permitted storage namespace. A privileged background worker may then rewrite that private storage object, bypassing the direct access restrictions enforced by storage policies.

Affected context

The issue occurs in deployments where the application icon update endpoint accepts a caller-controlled storage reference and stores it without confirming that the referenced image belongs to the target application's authorized image namespace. Risk is present when the subsequent update trigger processes that reference with service-role credentials and performs an upsert operation.

Exploit preconditions

  • Attack surface: The application icon update API and its asynchronous

update worker

  • Required access: An authenticated API identity with write access limited

to an application

  • Trigger point: Updating an application's icon reference, followed by the

worker's image metadata cleanup and re-upload process

  • Why exploitation is possible: The API does not sufficiently bind the

supplied storage path to the target application's authorized namespace, while

the worker acts with broader service-role privileges

Why this happens

The underlying bug is an object-level authorization failure. The application trusts a user-controlled object reference without verifying ownership or authorization against the resource being modified. That reference is later consumed by a privileged worker, creating a confused-deputy path in which service-role credentials perform an update on behalf of a less-privileged caller. This behavior maps to CWE-639 because authorization is not enforced for the selected storage object.

Potential impact

  • An attacker may cause a private image object outside their authorized scope to be rewritten.
  • Organization logos or other shared assets could be modified or corrupted.
  • Stored image metadata or content could be altered through the privileged worker.
  • The flaw could weaken tenant isolation and support follow-on integrity or availability impacts.

General mitigation guidance

Mitigation generally focuses on enforcing authorization at every object reference boundary and preventing privileged workers from treating user-supplied paths as trusted. Secure-by-default patterns include deriving storage namespaces from the authenticated principal and target application, validating ownership before persistence and again before background processing, and using narrowly scoped service identities rather than broad service-role credentials. Input trust can be reduced by accepting opaque asset identifiers resolved through an authorization-aware service instead of raw storage paths. Upsert and overwrite behavior should be restricted to explicitly authorized objects, with tenant isolation and least privilege applied consistently.

How teams detect issues like this

Detection approaches include static analysis and code review for storage paths assembled from request data, update endpoints that persist object references, and background jobs that use service-role credentials on caller-selected resources. Reviewers can look for missing owner, tenant, namespace, or capability checks before reads and writes, especially where asynchronous triggers cross privilege boundaries. Policy enforcement can require authorization checks at both API and worker layers, prohibit unrestricted overwrite operations, and flag privileged database or storage clients used with untrusted identifiers. Automated code review tools may help identify these patterns.

Sources

SourceLink
github.comgithub.com/Cap-go/capgo.app/security/advisories/GHSA-669c-gwrr-hc53
vulncheck.comvulncheck.com/advisories/capgo-app-icon-update-privilege-escalation-via-service-role-worker

Frequently asked

questions

Yes, within the application's authenticated API surface. Exploitation generally

requires a valid app-limited write credential and a deployment where the

background worker can access the referenced storage object.

No. The security issue arises because the privileged worker may access and

rewrite the object using service-role credentials, even when the caller cannot

directly read or write it under storage access policies.

Validate that every referenced asset belongs to the requesting principal and

target application's namespace before storing or processing it. The worker

should independently repeat that authorization decision and limit writes to

explicitly approved objects.

Use tenant-bound asset identifiers, enforce object-level authorization at each

access point, minimize worker privileges, and test cross-tenant and

cross-namespace references in API and background-job security reviews.

Find out what's already
exploitable in your codebase.