Magento LTS vulnerable to stored Cross-site Scripting (XSS) in admin system configs
Impact
This XSS vulnerability is about the system configs design/header/welcome design/header/logo_src design/header/logo_src_small design/header/logo_alt
Source excerpt · OSVAffected packages
Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.
| Affected range | Recorded fix |
|---|---|
| Earlier releases before 20.10.1Ecosystem versions | 20.10.1 |
Version evidence: OSV · GHSA-5vrp-638w-p8m2
View original version evidence (79 explicit versions)
Original source description
Impact
This XSS vulnerability is about the system configs
- design/header/welcome
- design/header/logo_src
- design/header/logo_src_small
- design/header/logo_alt
They are intended to enable admins to set a text in the two cases, and to define an image url for the other two cases. But because of previously missing escaping allowed to input arbitrary html and as a consequence also arbitrary JavaScript.
While this is in most usage scenarios not a relevant issue, some people work with more restrictive roles in the backend. Here the ability to inject JavaScript with these settings would be an unintended and unwanted privilege.
Patches
Has the problem been patched? What versions should users upgrade to?
The problem is patched with Version 20.10.1 or higher.
Workarounds
Is there a way for users to fix or remediate the vulnerability without upgrading?
Possible mitigations are
- Restricting access to the System Configs
- checking templates where these settings are used to apply proper html filtering
For Users relying on this possibility
Some Users might actually rely on the ability to use html there.
You can restore the previous behavior by making use of the new introduced ->getUnescapedValue() method on this escaped elements. Developers should have a look at the newly introduced Mage_Core_Model_Security_HtmlEscapedString
Credit
Credit goes to Aakash Adhikari @justlife4x4 for finding this issue