{"id":"CVE-2026-100611","revision":"0732d1ffb43243bc80c0a86b82d8be61","records":[{"revision":"0732d1ffb43243bc80c0a86b82d8be61","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-100611","aliases":[],"title":"Capgo apikey_manager Role Privilege Escalation via Incomplete Role Deny-list","description":"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.","state":0,"publishedAt":"2026-09-26T13:22:53.315+00:00","modifiedAt":"2026-09-30T17:20:05.706+00:00","affected":[{"ecosystem":"Vendor product","name":"capgo.app","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"Cap-go\",\n                    \"product\": \"capgo.app\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"versions\": [\n                        {\n                            \"version\": \"0\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"semver\",\n                            \"lessThanOrEqual\": \"12.261.0\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 4.0","vector":"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","score":7.1,"severity":"HIGH"},{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N","score":6.5,"severity":"MEDIUM"}],"references":["https://github.com/Cap-go/capgo.app/security/advisories/GHSA-2x4j-p4pr-fvp8","https://www.vulncheck.com/advisories/capgo-apikey-manager-role-privilege-escalation-via-incomplete-role-deny-list"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-100611","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-100611","identifiers":["CVE-2026-100611"]},"retained":false,"historicalAffected":[]}],"coverage":[]}