Résumé
Jodit has cross-site scripting (XSS) via <script> nested in SVG that bypasses clean-html sanitization
Détails de l’avis
A <script> element placed directly inside an <svg> (or MathML) container was not removed by Jodit's clean-html sanitizer.
The deny/allow tag filter compared node.nodeName against an upper-cased tag hash, but foreign (SVG/MathML) elements preserve their original-case node names — an SVG script reports "script", not "SCRIPT" — so the default denyTags list (which includes script) did not match it. The script therefore survived in the editor value and serialized output, where it could execute when the content was loaded back into a page or editor.
Proof of concept
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="400" viewBox="0 0 124 124">
<rect width="124" height="124" rx="24" fill="#000000"></rect>
<script type="text/javascript">alert(document.domain);</script>
</svg>
Load the payload into the editor (e.g. via source mode) and the <script> is preserved in editor.value and executes.
Impact
Stored / DOM cross-site scripting. An application that persists editor output and later renders or re-opens it in Jodit can have attacker-supplied script run in a victim's (e.g. an administrator's) authenticated browser context.
Patch
Fixed in 4.13.6: the deny/allow lookup now normalises the tag name to upper case before matching, so a foreign namespace can no longer bypass the filter, while allowTags is still honoured.
Workaround
Upgrade to 4.13.6 or later. Server-side sanitization of stored HTML mitigates in the interim.
Credit
Reported by Roman Kis (@CrownKingClown).
Références
Vulnérabilités liées
Tout Supply chain →- MEDIUMCVE-2026-55696
PrivateBin has stored Cross-Side-Scripting (XSS) vulnerability in attachment download link via dangerous MIME types with required user-interaction
- MEDIUMCVE-2026-54570
AngleSharp HTML5 Spec Compliance: mXSS via annotation-xml HTML Integration Point Bypass
- MEDIUMGHSA-8rqh-vxpr-x77p
plone.restapi: Stored XSS by spoofing mime type
- MEDIUMCVE-2026-54503
plone.app.textfield: Stored XSS by spoofing mime type
- HIGHGHSA-7q9c-hpx7-9cwm
TypeSpec: Unauthenticated Remote Shutdown of Spector Mock Server via POST /.admin/stop
- CRITICALCVE-2026-73842
OpenChoreo: cluster-gateway internal proxy performs no caller authentication and is not read-only — data-plane Secret disclosure and arbitrary Kubernetes mutation