You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Description:
Every MCP write-handler calls only requireAuthenticatedUser() and performs no per-Application RBAC check. Any authenticated Nextcloud user can call openbuilt.upsertPage, openbuilt.upsertMenuItem, openbuilt.addWidget, openbuilt.upsertSchema, or openbuilt.promoteVersion against any virtual app — including apps where they hold no owners/editors role and are not an NC admin.
Scenario:
User A owns my-app. User B has no role on it.
User B calls openbuilt.upsertPage with appSlug: "my-app" and any pageId.
The handler passes requireAuthenticatedUser(), proceeds to mutate my-app's manifest without checking User B's role.
User B successfully overwrites or injects pages/menus/widgets into an app they do not own.
Severity: CRITICAL
Location:
lib/Mcp/Handler/CreateAppHandler.php:57,UpsertSchemaHandler.php:49,UpsertPageHandler.php:51,AddWidgetHandler.php:48,UpsertMenuItemHandler.php:50,PromoteVersionHandler.php:52Description:
Every MCP write-handler calls only
requireAuthenticatedUser()and performs no per-Application RBAC check. Any authenticated Nextcloud user can callopenbuilt.upsertPage,openbuilt.upsertMenuItem,openbuilt.addWidget,openbuilt.upsertSchema, oropenbuilt.promoteVersionagainst any virtual app — including apps where they hold no owners/editors role and are not an NC admin.Scenario:
my-app. User B has no role on it.openbuilt.upsertPagewithappSlug: "my-app"and any pageId.requireAuthenticatedUser(), proceeds to mutatemy-app's manifest without checking User B's role.Contrast with controllers:
ApplicationVersionsController::update(line 291) callsrequireRole(slug, WRITE_ROLES).VersionPromotionController::promote(line 146) callsassertEditorOrOwner— NC admins are NOT auto-granted per REQ-OBVP-007.The MCP path defeats both gates entirely.
Suggested fix:
appSlugbefore any mutation.promoteVersionshould be owners-only (no NC-admin auto-grant, consistent with REQ-OBVP-007).Source: deep team-reviewer pass 2026-05-27