Skip to main content

Capgo EUVDEUVD-2026-87706

| CVE-2026-100611 HIGH
Improper Privilege Management (CWE-269)
2026-09-26 VulnCheck GHSA-p4m4-7g3w-gpqw
7.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as apikey_manager via JWT
  2. Delivery
    POST /apikey binding an omitted deploy role
  3. Exploit
    Bypass deny-list and priority_rank check
  4. Execution
    Mint deploy-scoped API key
  5. Persist
    Push malicious OTA JS bundle
  6. Impact
    Arbitrary code delivered to all app end users

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Least privilege enforcement
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires an authenticated principal holding the apikey_manager organization role (permissions org.manage_apikeys and org.read) issuing POST /apikey with a valid JWT session against a Capgo capgo.app backend at version ≤12.261.0. No user interaction and no higher privilege is needed. The key limiting factor is that the attacker must already possess the apikey_manager role within the target organization - this is authenticated insider/delegated-role abuse, not remote-unauthenticated access. The flaw is present in default role seeding (apikey_manager priority_rank 78 exceeds deploy roles' ranks 68/66/58/57, and the deny-list omits app_developer, app_uploader, channel_developer, channel_uploader), so no non-default configuration is required to trigger it.

Impact

This is a genuine, well-described privilege-escalation flaw (CWE-269) whose real-world risk sits in the medium band. The vendor CVSS 4.0 vector (7.1, AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N) correctly identifies it as network-reachable, low-complexity, and requiring only low privileges (PR:L) - the attacker must already hold the apikey_manager org role. There is NO EPSS score, NO CISA KEV listing, and NO public exploit code, so there is no evidence of active or imminent exploitation; the risk is a logic/authorization defect that a malicious or compromised low-privilege org member could abuse deliberately. One signal-to-note-conflict: the vendor scores subsequent-system impact as N (SC/SI/SA:N), yet the described outcome - minting a deploy-role key to push arbitrary OTA JavaScript to ALL end users of the organization's apps - is effectively a supply-chain compromise of downstream end-user devices, which I read as a scope/subsequent-system integrity impact the vendor vector understates. The mitigating reality is that this is an insider/authenticated-role abuse (not remote-unauth), which bounds the exploitation population, but the blast radius (all app end users) is severe, and no patched version exists, so it warrants prompt attention for anyone running self-hosted or SaaS Capgo with delegated apikey_manager roles.

Exploit ScenarioDerived

A user granted only the apikey_manager role (intended to manage API keys, not deploy code) authenticates with a JWT and calls POST /apikey requesting a key bound to a deploy role such as app_uploader or channel_developer. Because the deny-list omits those roles and apikey_manager's priority_rank (78) outranks them, the request succeeds; the attacker then uses the resulting key to publish a malicious OTA JavaScript bundle that is delivered to every end user of the organization's apps. No public exploit code is identified at time of analysis, but the attack requires no special tooling beyond an authenticated API call.

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

Privilege escalation in the Capgo capgo.app backend (versions ≤ 12.261.0) lets an authenticated user who holds only the apikey_manager organization role mint API keys bound to higher-privileged deploy roles (app_developer, app_uploader, channel_developer, channel_uploader). Those keys can in turn be used to push arbitrary over-the-air JavaScript updates to every end user of the organization's apps, giving an insider or delegated-role holder unauthorized write access to production app content. Exploitation requires a valid JWT session and the apikey_manager role (authenticated, no user interaction), no public exploit code was identified at time of analysis, and the issue is not listed in CISA KEV; at advisory publication no patched version was available.

RemediationAI

No vendor-released patch was identified at the time of advisory publication, so remediation must be compensating until an upstream fix lands. Immediately inventory every principal holding the apikey_manager role and remove it from users who do not strictly need to provision API keys - since the flaw is only reachable with that role, this eliminates the attack path, at the cost of centralizing key creation on a small set of trusted administrators. Audit and rotate all existing API keys: enumerate keys whose role bindings include app_developer, app_uploader, channel_developer, or channel_uploader and revoke any that cannot be attributed to a legitimate request, then reissue needed keys from an account whose role legitimately covers the deploy permission; expect short-lived disruption to CI/CD pipelines that rely on those keys. As a code-level hardening, add the four deploy roles to APIKEY_MANAGER_DENIED_ASSIGNABLE_ROLES in public/apikey/scope.ts and, ideally, lower apikey_manager's priority_rank below the deploy roles (68/66/58/57) or replace the rank heuristic in createRoleBindingForPrincipal with an explicit check that the caller holds every permission conferred by the role being assigned - the trade-off is that any workflow legitimately provisioning keys with deploy roles through apikey_manager must be re-delegated. Until then, alert on POST /apikey calls from apikey_manager sessions and on new API keys whose bindings are more privileged than the issuing principal, which provides detection rather than prevention. Monitor the advisory at https://github.com/Cap-go/capgo.app/security/advisories/GHSA-2x4j-p4pr-fvp8 for the patched release and upgrade to it as soon as it is published.

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

The flaw is an improper privilege management / privilege escalation issue (CWE-269) in Capgo's organization role-based access control and API-key issuance path. Capgo is an over-the-air (OTA) update service for Capacitor/JavaScript apps; API keys carry role bindings that determine which operations a client may perform against an organization. When an authenticated principal with only the apikey_manager role (granting org.manage_apikeys and org.read) calls POST /apikey with a JWT session, the backend validates only three things: the org.manage_apikeys permission, a hard-coded deny-list of assignable role names (APIKEY_MANAGER_DENIED_ASSIGNABLE_ROLES in public/apikey/scope.ts), and a priority-rank comparison implemented in createRoleBindingForPrincipal (private/role_bindings.ts). No check verifies that the caller actually possesses the permissions conveyed by the role being bound to the new key. Because the deny-list omits the deploy roles app_developer, app_uploader, channel_developer, and channel_uploader, and because the seeded apikey_manager role has priority_rank 78 - above those roles' ranks of 68, 66, 58, and 57 - the rank check also succeeds. The result is a scope-confusion / role-binding escalation where a role that is explicitly not permitted to upload bundles or promote channels can create a credential that can do exactly that. Affected CPE coverage is broad within the product line: cpe:2.3:a:cap-go:capgo.app:*:*:*:*:*:*:*:* (all versions up to and including 12.261.0). The independent assessment scores this CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:N, consistent with the vendor-published CVSS 4.0 score of 7.1 (AV:N/AC:L/AT:N/PR:L/UI:N with high integrity impact and no confidentiality or availability impact): the weakness is a remote, network-reachable integrity compromise that crosses a privilege boundary, gated on the attacker already holding the apikey_manager role inside the target organization.

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

Network API call, low complexity, requires the pre-held apikey_manager role (PR:L); high integrity impact and scope change because malicious OTA JS reaches end-user devices under a different security authority.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

DescriptionCVE.org

Capgo (capgo.app backend, versions ≤ 12.261.0) improperly restricts which roles the apikey_manager organization role may bind to newly created API keys. When an authenticated user holding only apikey_manager (permissions org.manage_apikeys and org.read) calls POST /apikey with a JWT session, the only checks applied are the org.manage_apikeys permission, a fixed deny-list of assignable role names (APIKEY_MANAGER_DENIED_ASSIGNABLE_ROLES in public/apikey/scope.ts), and a priority-rank comparison in createRoleBindingForPrincipal (private/role_bindings.ts). No check verifies that the caller actually holds the permissions conferred by the role being assigned. Because the deny-list omits the deploy roles app_developer, app_uploader, channel_developer and channel_uploader, and apikey_manager is seeded with priority_rank 78 - higher than those roles' ranks (68, 66, 58, 57) - the rank check also passes. As a result, an apikey_manager who cannot upload bundles or promote channels can mint an API key bound to a deploy role and use it to push arbitrary OTA JavaScript updates to all end users of the organization's apps. As of the advisory publication no patched version was available.

Technical POC Analysis

Note on the record: the supplied advisory (GHSA-2x4j-p4pr-fvp8) rates this Moderate, states "No known CVE," and lists no patched version.

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

Capgo's capgo.app backend (versions ≤ 12.261.0) contains a privilege escalation flaw that allows a user with the apikey_manager role to mint API keys with higher-privileged deploy roles, enabling unauthorized over-the-air JavaScript updates to all end users of the organization's apps. This means a delegated-role holder or insider could alter production app content, affecting every customer and undermining trust in app integrity. Leadership should prioritize immediate mitigations because no vendor patch is currently available, though no public exploit identified at time of analysis.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include: restrict the apikey_manager role to a minimal set of trusted administrators; enforce MFA for all privileged accounts; monitor for anomalous API key creation and OTA update pushes with real-time alerts; and consider temporarily disabling the apikey_manager role if it is not business-critical. Reassess when a patch becomes available.

Threat Intelligence Overview

EPSS Score
0.2%
Top 89% exploitable
Prevalence
Low
Niche OTA live-update backend for the Capacitor developer ecosystem
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
High
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.

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