The vulnerability is a broken access control issue in the TYPO3 CMS redirects module. The analysis of the provided patches reveals that several functions in the module lacked proper permission checks, allowing backend users with basic access to the module to read, create, and modify any redirect record without restriction. The core of the issue lies in the failure to check the user's web-mounts and file-mounts.
The vulnerable functions were identified by observing where the security patches added new permission checks. The main points of entry for the vulnerability were:
-
ManagementController::handleRequest: This function, which renders the redirects management interface, did not check for list or edit permissions, giving any user who could access the module full visibility and control over all redirects.
-
RedirectRepository::findRedirectsByDemand and countRedirectsByByDemand: These functions were responsible for querying the database for redirects. They did not filter the results based on the user's permissions, leading to the disclosure of all redirect records.
-
ValuePickerItemDataProvider::addData: This function populated the redirect form with a list of all available source hosts, exposing the existence of sites the user was not supposed to have access to.
The patch introduces a new RedirectPermissionGuard class to centralize access control logic and a DataHandlerPermissionGuardHook to intercept and validate all create/update operations on redirect records. The vulnerable functions were modified to use these new security mechanisms, thus closing the access control gap.