VYPR
Moderate severityNVD Advisory· Published Sep 25, 2023· Updated Sep 24, 2024

Cross-site Scripting (XSS) in pimcore admin-ui-classic-bundle translations

CVE-2023-42817

Description

Pimcore admin-ui-classic-bundle provides a Backend UI for Pimcore. The translation value with text including “%s” (from “%suggest%) is parsed by sprintf() even though it’s supposed to be output literally to the user. The translations may be accessible by a user with comparatively lower overall access (as the translation permission cannot be scoped to certain “modules”) and a skilled attacker might be able to exploit the parsing of the translation string in the dialog box. This issue has been patched in commit abd77392 which is included in release 1.1.2. Users are advised to update to version 1.1.2 or apply the patch manually.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
pimcore/admin-ui-classic-bundlePackagist
< 1.1.21.1.2

Affected products

1

Patches

1
abd7739298f9

[Bug]: Fix avoid recursion on replaced arguments having further % (#264)

2 files changed · +5 2
  • public/js/pimcore/functions.js+4 1 modified
    @@ -1624,8 +1624,11 @@ sprintf = function ()
                 else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
                 else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
             }
    -        str = leftpart + subst + rightPart;
    +        arguments[numSubstitutions] = subst;
    +        str = leftpart + '${'+numSubstitutions+'}' + rightPart;
         }
    +    str = str.replace(/\${(\d+)}/g, (match, num) => arguments[num]);
    +
         return str;
     }
     
    
  • public/js/pimcore/settings/translation.js+1 1 modified
    @@ -322,7 +322,7 @@ pimcore.settings.translation.domain = Class.create({
                         icon: "/bundles/pimcoreadmin/img/flat-color-icons/delete.svg",
                         handler: function (grid, rowIndex) {
                             let data = grid.getStore().getAt(rowIndex);
    -                        pimcore.helpers.deleteConfirm(t('translation'), Ext.util.Format.htmlEncode(data.data.key), function () {
    +                        pimcore.helpers.deleteConfirm(t('translation').toLowerCase(), Ext.util.Format.htmlEncode(data.data.key), function () {
                                 grid.getStore().removeAt(rowIndex);
                             }.bind(this));
                         }.bind(this)
    

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

4

News mentions

0

No linked articles in our index yet.