Umbraco version 8.9.0 (also seen in 8.6.3) has a privilege escalation issue in the core administrative screens which allows a low privileged user to access various resources otherwise limited to higher privileged users. The issue exists in an API endpoint that does not properly check the user’s authorization prior to returning results found in the application’s logging section.
The observed version is Umbraco 8.9.0:
![Image001 Image001](https://npercoco.typepad.com/.a/6a0133f264aa62970b0263e99ab8e4200b-800wi)
The higher privileged user (currently, an Administrator) has functionality that allows them to view log data in the administrative UI:
![Image002 Image002](https://npercoco.typepad.com/.a/6a0133f264aa62970b0278801fe9f2200d-800wi)
This log data contains whatever may have been inserted into the application logs per configuration (here, Information level) or custom exception handling routines. Note that the risk of the information leak will be contextualized based on what is actually logged by default or by whatever additional logging the application maintainer has decided to add. For example, custom logging of a failed authentication routine could potentially leak usernames and passwords to the log:
![Image003 Image003](https://npercoco.typepad.com/.a/6a0133f264aa62970b026bdec808d1200c-800wi)
In order to test this issue, a lower privileged user is created by the Administrator and placed in the Writers group:
![Image004 Image004](https://npercoco.typepad.com/.a/6a0133f264aa62970b0278801feb49200d-800wi)
The Writers group is given limited access to the application. Note that only the Administrators can view Settings while the low privileged user can only view the Content tab indicating the intent of limiting what Writers can do or see within the application:
![Image005 Image005](https://npercoco.typepad.com/.a/6a0133f264aa62970b0263e99aba2b200b-800wi)
The low privileged user authenticates to the application and is given the requisite cookies and headers in order to access the application:
![DOC_17816_6a0133f264aa62970b026bdec808ec200c-800wi](https://www.trustwave.com/hs-fs/hubfs/Web/Document%20Images/DOC_17816_6a0133f264aa62970b026bdec808ec200c-800wi.webp?width=664&height=372&name=DOC_17816_6a0133f264aa62970b026bdec808ec200c-800wi.webp)
Using these identifiers, the low privileged user can access the API endpoint which returns the log data only available to the Administrator via the UI:
More example log data:
![Image008 Image008](https://npercoco.typepad.com/.a/6a0133f264aa62970b0278801feb61200d-800wi)
It was observed in the Umbraco.Web.dll that the LogViewerController class uses no granular authorization attributes on its exposed endpoints. Here we see that numerous endpoints are accessible by lower privileged users including the GetLogs method:
![Image009 Image009](https://npercoco.typepad.com/.a/6a0133f264aa62970b0263e99aba40200b-800wi)
Conversely, there are other areas that do protect resources such as the UsersController wherein some methods are explicitly limited to Administrative users (“[AdminUsersAuthorize]” attribute) or must otherwise be given permission to the controller (“[UmbracoApplicationAuthorize]”). A similar approach should be used for the LogViewerController to limit unauthorized access to its data:
![Image010 Image010](https://npercoco.typepad.com/.a/6a0133f264aa62970b026bdec808ff200c-800wi)
This issue was reported to Umbraco through Trustwave's Responsible Disclosure program. Umbraco was responsive in putting a patch together and we recommend that affected users upgrade to Umbraco CMS 8.10.0 or the latest stable version. Please note that Trustwave has not verified the fixes. Umbraco version 7.x is not affected by this bug.
Reference:
TWSL2021-005: https://www.trustwave.com/en-us/resources/security-resources/security-advisories/?fid=28645