The vulnerability, identified as GHSA-jf73-858c-54pg, is an authorization flaw in OliveTin where the application does not enforce 'view' permissions when constructing API responses for dashboards and actions. Authenticated users with view: false permissions could still enumerate action metadata, such as titles, IDs, icons, and arguments, even though they were correctly denied execution rights.
The root cause is the absence of calls to the acl.IsAllowedView() function in several key code paths responsible for generating API responses. The analysis of the patch commit d7962710e7c4 confirms this.
-
(*oliveTinAPI).GetActionBinding: This API endpoint allowed a direct lookup of an action by its ID. The original code fetched the action and returned its details without any permission check. The patch adds an explicit check using api.userCanViewAction, which wraps acl.IsAllowedView.
-
buildDefaultDashboard: This function, which assembles the main dashboard, iterated through all actions and added them to the response. The patch introduces a call to acl.IsAllowedView inside the loop, ensuring that only permitted actions are included.
-
(*DashboardRenderRequest).findActionForEntity: This helper function, used for finding actions, also lacked a view permission check before returning action details. The patch adds the necessary acl.IsAllowedView check.
An attacker could exploit this by logging in as a low-privilege user and making API calls to the /api/GetDashboard or /api/GetActionBinding endpoints to discover potentially sensitive information about actions that should be hidden.