VYPR
Critical severityNVD Advisory· Published Sep 8, 2022· Updated Apr 22, 2025

XWiki Platform Applications Tag and XWiki Platform Tag UI vulnerable to Eval Injection

CVE-2022-36100

Description

XWiki Platform Applications Tag and XWiki Platform Tag UI are tag applications for XWiki, a generic wiki platform. Starting with version 1.7 in XWiki Platform Applications Tag and prior to 13.10.6 and 14.4 in XWiki Platform Tag UI, the tags document Main.Tags in XWiki didn't sanitize user inputs properly. This allowed users with view rights on the document (default in a public wiki or for authenticated users on private wikis) to execute arbitrary Groovy, Python and Velocity code with programming rights. This also allowed bypassing all rights checks and thus both modification and disclosure of all content stored in the XWiki installation. The vulnerability could be used to impact the availability of the wiki. On XWiki versions before 13.10.4 and 14.2, this can be combined with CVE-2022-36092, meaning that no rights are required to perform the attack. The vulnerability has been patched in versions 13.10.6 and 14.4. As a workaround, the patch that fixes the issue can be manually applied to the document Main.Tags or the updated version of that document can be imported from version 14.4 of xwiki-platform-tag-ui using the import feature in the administration UI on XWiki 10.9 and later.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
org.xwiki.platform:xwiki-platform-tag-uiMaven
< 13.10.613.10.6
org.xwiki.platform.applications:xwiki-application-tagMaven
>= 1.7
org.xwiki.platform:xwiki-platform-tag-uiMaven
>= 14.0, < 14.414.4

Affected products

1

Patches

1
604868033ebd

XWIKI-19747: Escape tag names

https://github.com/xwiki/xwiki-platformMichael HamannMay 20, 2022via ghsa
1 file changed · +9 8
  • xwiki-platform-core/xwiki-platform-tag/xwiki-platform-tag-ui/src/main/resources/Main/Tags.xml+9 8 modified
    @@ -51,14 +51,15 @@ $xwiki.ssx.use('Main.Tags')##
     ##
     #set ($do = "$!{request.get('do')}")
     #set ($tag = "$!{request.get('tag')}")
    +#set ($wikiEscapedTag = $services.rendering.escape($tag, 'xwiki/2.1'))
     #set ($urlEscapedTag = $escapetool.url($tag))
     #set ($htmlEscapedTag = $escapetool.xml($tag))
     ##
     ## Macro displayTagAppTitle. Display level1 title of this app.
     ##
     #macro (displayTagAppTitle $urlEscapedTag $htmlEscapedTag $displayButtons)
       (% class="xapp" %)
    -  = (% class="highlight tag" %)${tag}##
    +  = (% class="highlight tag" %)${wikiEscapedTag}##
           #if ($xwiki.hasAdminRights() &amp;&amp; $displayButtons) ##
             [[$services.localization.render('xe.tag.rename.link')&gt;&gt;||queryString="do=prepareRename&amp;tag=${urlEscapedTag}" class="button rename" rel="nofollow"]] [[$services.localization.render('xe.tag.delete.link')&gt;&gt;||queryString="do=prepareDelete&amp;tag=${urlEscapedTag}" class="button delete" rel="nofollow"]]##
           #end
    @@ -74,14 +75,14 @@ $xwiki.ssx.use('Main.Tags')##
       ##
       #displayTagAppTitle($urlEscapedTag $htmlEscapedTag true)
       #if ("$!{request.get('renamedTag')}" != '')
    -    {{info}}$services.localization.render('xe.tag.rename.success', ["//${request.get('renamedTag')}//"]){{/info}}
    +    {{info}}$services.localization.render('xe.tag.rename.success', ["//${services.rendering.escape(${request.get('renamedTag')}, 'xwiki/2.1')}//"]){{/info}}
     
       #end
       #set ($list = $xwiki.tag.getDocumentsWithTag($tag))
       {{container layoutStyle="columns"}}
         (((
           (% class="xapp" %)
    -      === $services.localization.render('xe.tag.alldocs', ["//${tag}//"]) ===
    +      === $services.localization.render('xe.tag.alldocs', ["//${wikiEscapedTag}//"]) ===
     
           #if ($list.size()&gt; 0)
             {{html}}#displayDocumentList($list false $blacklistedSpaces){{/html}}
    @@ -91,8 +92,8 @@ $xwiki.ssx.use('Main.Tags')##
         )))
         (((
           (% class="xapp" %)
    -      === $services.localization.render('xe.tag.activity', ["//${tag}//"]) ===
    -      {{notifications useUserPreferences="false" displayOwnEvents="true" tags="$tag" displayRSSLink="true" /}}
    +      === $services.localization.render('xe.tag.activity', ["//${wikiEscapedTag}//"]) ===
    +      {{notifications useUserPreferences="false" displayOwnEvents="true" tags="$wikiEscapedTag" displayRSSLink="true" /}}
         )))
       {{/container}}
     #elseif ($do == 'prepareRename')
    @@ -123,7 +124,7 @@ $xwiki.ssx.use('Main.Tags')##
        #set ($urlEscapedRenameTo = $escapetool.url($renameTo))
        $response.sendRedirect($doc.getURL('view', "do=viewTag&amp;tag=${urlEscapedRenameTo}&amp;renamedTag=${urlEscapedTag}"))
       #else
    -    {{error}}$services.localization.render('xe.tag.rename.failure', ["//${tag}//", "//${renameTo}//"]){{/error}}
    +    {{error}}$services.localization.render('xe.tag.rename.failure', ["//${wikiEscapedTag}//", "//${services.rendering.escape($renameTo, 'xwiki/2.1')}//"]){{/error}}
       #end
     #elseif ($do == 'prepareDelete')
       ##
    @@ -148,15 +149,15 @@ $xwiki.ssx.use('Main.Tags')##
       #if ($success == true || $success == 'OK')
         $response.sendRedirect($doc.getURL('view', "deletedTag=${urlEscapedTag}"))
       #else
    -    {{error}}$services.localization.render('xe.tag.delete.failure', ["//${tag}//"]){{/error}}
    +    {{error}}$services.localization.render('xe.tag.delete.failure', ["//${wikiEscapedTag}//"]){{/error}}
       #end
     #else
       ##
       ## View all tags (Tag Cloud)
       ##
       #set ($title = 'All Tags')
       #if ("$!{request.get('deletedTag')}" != '')
    -    {{info}}$services.localization.render('xe.tag.delete.success', ["//${request.get('deletedTag')}//"]){{/info}}
    +    {{info}}$services.localization.render('xe.tag.delete.success', ["//${services.rendering.escape($request.get('deletedTag'), 'xwiki/2.1')}//"]){{/info}}
     
       #end
       {{tagcloud/}}
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

5

News mentions

0

No linked articles in our index yet.