CVE-2026-41591

Marko: XSS via case-insensitive script/style closing tag bypass in runtime HTML escaping

Published May 8, 2026 CVSS 3.1 · 6.4 Medium EPSS < 1% KEV · Not listed
Description
Marko is a declarative, HTML-based language for building web apps. Prior to marko version 5.38.36 and prior to @marko/runtime-tags 6.0.164, when dynamic text is interpolated into a <script> or <style> tag the Marko runtime failed to prevent tag breakout when the closing tag used non-lowercase casing. An attacker able to place input inside a <script> or <style> block could break out of the tag with </SCRIPT>, </Style>, etc. and inject arbitrary HTML/JavaScript, resulting in cross-site scripting. This issue has been patched in marko version 5.38.36 and @marko/runtime-tags 6.0.164.

Remediation

No solution or workaround provided in the CVE record

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-x9fj-57fh-c8wq Marko: XSS via case-insensitive script/style closing tag bypass in runtime HTML escaping
History
Type Values Removed Values Added
First Time appeared Openjsf
Openjsf marko
Openjsf marko\/runtime-tags
CPEs cpe:2.3:a:openjsf:marko:*:*:*:*:*:node.js:*:*
cpe:2.3:a:openjsf:marko\/runtime-tags:*:*:*:*:*:node.js:*:*
Vendors & Products Openjsf
Openjsf marko
Openjsf marko\/runtime-tags
Type Values Removed Values Added
First Time appeared Marko-js
Marko-js marko
Vendors & Products Marko-js
Marko-js marko
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description Marko is a declarative, HTML-based language for building web apps. Prior to marko version 5.38.36 and prior to @marko/runtime-tags 6.0.164, when dynamic text is interpolated into a <script> or <style> tag the Marko runtime failed to prevent tag breakout when the closing tag used non-lowercase casing. An attacker able to place input inside a <script> or <style> block could break out of the tag with </SCRIPT>, </Style>, etc. and inject arbitrary HTML/JavaScript, resulting in cross-site scripting. This issue has been patched in marko version 5.38.36 and @marko/runtime-tags 6.0.164.
Title Marko: XSS via case-insensitive script/style closing tag bypass in runtime HTML escaping
Weaknesses CWE-79
References
Metrics cvssV3_1

{'score': 6.4, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
May 8, 2026, 9:26 PM
Reserved
Apr 21, 2026, 2:15 PM
Status
Analyzed
Published
May 8, 2026, 4:16 PM
Modified
Aug 26, 2026, 7:16 PM