The vulnerability is a classic case of Missing Authorization (CWE-862) within the view layer of the application. The core issue lies in the Jelly templates responsible for rendering the Jenkins side panel. These templates failed to check for Overall/Read permission before rendering sensitive information.
The investigation of the patch reveals two main points of failure:
- The generic side panel template (
hudson/model/View/sidepanel.jelly) rendered its widgets, including the 'Build Executor Status' widget which lists agent names, without checking permissions. The patch rectifies this by wrapping the widget rendering logic in a permission check.
- The user signup page (
hudson/security/SecurityRealm/signup.jelly), which is accessible to unauthenticated users, improperly included this vulnerable side panel. The patch fixes this by removing the side panel from this specific page.
Consequently, the vulnerable functions identified are the Java methods that are invoked during the rendering of these unprotected UI components. A runtime profiler would capture calls to hudson.model.View.getWidgets() to get the list of widgets, and subsequently, methods on those widgets like hudson.widgets.ExecutorsWidget.getComputers() to fetch the agent data. Additionally, hudson.security.SecurityRealm.doSignup is identified as a vulnerable entry point as it leads to the rendering of the compromised signup page.