VYPR
Critical severityNVD Advisory· Published Apr 18, 2023· Updated Feb 5, 2025

Code injection in template provider administration in xwiki-platform

CVE-2023-29514

Description

XWiki Platform is a generic wiki platform offering runtime services for applications built on top of it. Any user with edit rights on any document (e.g., their own user profile) can execute code with programming rights, leading to remote code execution. This vulnerability has been patched in XWiki 13.10.11, 14.4.8, 14.10.1 and 15.0 RC1. Users are advised to upgrade. There are no known workarounds for this vulnerability.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
org.xwiki.platform.applications:xwiki-application-administrationMaven
>= 1.35, <= 1.49
org.xwiki.platform:xwiki-platform-administrationMaven
>= 3.1-milestone-1
org.xwiki.platform:xwiki-platform-administration-uiMaven
>= 4.2-milestone-1, < 13.10.1113.10.11
org.xwiki.platform:xwiki-platform-administration-uiMaven
>= 14.0-rc-1, < 14.4.814.4.8
org.xwiki.platform:xwiki-platform-administration-uiMaven
>= 14.5, < 14.10.114.10.1

Affected products

1

Patches

1
7bf7094f8ffa

XWIKI-20268: Improve escaping in AdminTemplatesSheet

https://github.com/xwiki/xwiki-platformMichael HamannNov 25, 2022via ghsa
2 files changed · +25 1
  • xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-test/xwiki-platform-administration-test-docker/src/test/it/org/xwiki/administration/test/ui/PageTemplatesIT.java+24 0 modified
    @@ -25,6 +25,7 @@
     import org.junit.jupiter.api.BeforeEach;
     import org.junit.jupiter.api.Order;
     import org.junit.jupiter.api.Test;
    +import org.openqa.selenium.WebElement;
     import org.xwiki.administration.test.po.TemplateProviderInlinePage;
     import org.xwiki.administration.test.po.TemplatesAdministrationSectionPage;
     import org.xwiki.model.reference.DocumentReference;
    @@ -358,6 +359,29 @@ void createPageFromForbiddenTemplate(TestUtils setup, TestReference testReferenc
             assertEquals("Some content in that page", viewPage.getContent());
         }
     
    +    /**
    +     * The goal of this test is to check that the template provider's title is correctly escaped.
    +     */
    +    @Test
    +    @Order(5)
    +    void templateProviderTitleEscaping(TestUtils setup, TestReference testReference) throws Exception
    +    {
    +        cleanUp(setup, testReference);
    +
    +        // Create a template
    +        String templateContent = "Templates are fun";
    +        String providerName = "{{html}}<span>HTML</span>{{/html}}";
    +        LocalDocumentReference templateProviderReference = new LocalDocumentReference(providerName,
    +            testReference.getLocalDocumentReference().getParent());
    +        createTemplateAndTemplateProvider(setup, templateProviderReference, templateContent,
    +            "Funny templates", true);
    +
    +        TemplatesAdministrationSectionPage adminPage = TemplatesAdministrationSectionPage.gotoPage();
    +        List<WebElement> links = adminPage.getExistingTemplatesLinks();
    +        assertFalse(links.stream().anyMatch(element -> element.getText().equals("HTML")));
    +        assertTrue(links.stream().anyMatch(element -> providerName.equals(element.getText())));
    +    }
    +
         /**
          * Helper function to Create both a Template and a Template Provider for the tests in this class.
          */
    
  • xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/AdminTemplatesSheet.xml+1 1 modified
    @@ -112,7 +112,7 @@
       == {{translation key="admin.templates.providerslist"/}} ==
     
         #foreach($providerFullname in $availableProviders)
    -      * [[$services.rendering.escape($xwiki.getDocument($providerFullname).plainTitle, $xwiki.currentContentSyntaxId)&gt;&gt;$providerFullname]]
    +      * [[$services.rendering.escape($services.rendering.escape($xwiki.getDocument($providerFullname).plainTitle, $xwiki.currentContentSyntaxId), $xwiki.currentContentSyntaxId)&gt;&gt;$services.rendering.escape($providerFullname, $xwiki.currentContentSyntaxId)]]
         #end
       )))
     #end
    

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.