The vulnerability is a broken object-level authorization issue within the Umbraco CMS backoffice API. Authenticated users could modify or view domain configurations for content nodes they were not authorized to access. The security patch, identified by comparing versions 17.2.1 and 17.2.2, reveals that authorization checks were missing in key API endpoints.
The analysis of commit 11a412c0fd89c70af2fa76dd3478a3e8024dfeb2 shows that two controller methods were patched:
-
Umbraco.Cms.Api.Management.Controllers.Document.UpdateDomainsController.Update: This method handles the modification of domain data (PUT /{id:guid}/domains). Before the patch, it failed to verify if the user had the necessary ActionAssignDomain permission for the target content node. This allowed a low-privileged user to alter domain routing for any page on the site.
-
Umbraco.Cms.Api.Management.Controllers.Document.DomainsController.Domains: This method retrieves domain data (GET /{id:guid}/domains). It was missing a check for ActionBrowse permission, allowing a user to enumerate and view domain configurations of content nodes outside of their authorized section, leading to information disclosure.
The patch introduces explicit authorization checks in both methods using the IAuthorizationService, ensuring that the user has the appropriate permissions for the specific content node before any action is taken. The updated integration tests confirm this fix by changing the expected outcome for unauthorized users from OK to Forbidden. These functions would therefore appear in a runtime profile when the vulnerability is triggered.