Any user who can edit any page like their profile can create a custom skin with a template override that is executed with programming right, thus allowing remote code execution.
To reproduce, as a user without edit, script or admin right, add an object of class XWiki.XWikiSkins
to your profile. Name it whatever you want and set the Base Skin to flamingo
.
Add an object of class XWikiSkinFileOverrideClass
and set the path to macros.vm
and the content to:
#macro(mediumUserAvatar $username)
#resizedUserAvatar($username 50)
$services.logging.getLogger('Skin').error("I got programming: $services.security.authorization.hasAccess('programming')")
#end
Back to your profile, click Test this skin
. Force a refresh, just in case.
If the error "Skin - I got programming: true" gets logged, the installation is vulnerable.
This has been patched in XWiki 14.10.19, 15.5.4 and 15.10RC1.
We're not aware of any workaround except upgrading.
{ "nvd_published_at": "2024-04-10T21:15:07Z", "cwe_ids": [ "CWE-862" ], "severity": "CRITICAL", "github_reviewed": true, "github_reviewed_at": "2024-04-10T17:14:47Z" }