{"id":29691,"date":"2026-09-27T00:31:30","date_gmt":"2026-09-26T16:31:30","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-100611"},"modified":"2026-09-27T00:31:30","modified_gmt":"2026-09-26T16:31:30","slug":"cve-2026-100611","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-100611","title":{"rendered":"CVE-2026-100611 [MEDIUM] &#8211; Capgo (capgo.app backend, versions \u2264 12.261.0) improperly restricts which roles the apikey"},"content":{"rendered":"<p>Capgo (capgo.app backend, versions \u2264 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 \u2014 higher than those roles&#8217; ranks (68, 66, 58, 57) \u2014 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&#8217;s apps. As of the advisory publication no patched version was available.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Capgo (capgo.app backend, versions \u2264 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_<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-29691","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/29691","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=29691"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29691"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29691"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}