{"id":"CVE-2026-41591","title":"Marko is a declarative, HTML-based language for building web apps","summary":"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 prev…","severity":"medium","cvss":6.4,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","cwe":["CWE-79"],"vendor":"openjsf","product":"marko","affected":["marko < 5.38.36","marko/runtime-tags < 6.0.164"],"patched":["marko 5.38.36","marko/runtime-tags 6.0.164"],"published":"2026-05-08","updated":"2026-08-26","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-41591","references":[{"url":"https://github.com/marko-js/marko/security/advisories/GHSA-x9fj-57fh-c8wq","label":"security-advisories@github.com"},{"url":"https://github.com/marko-js/marko/security/advisories/GHSA-x9fj-57fh-c8wq","label":"134c704f-9b21-4f2e-91b3-4a467353bcc0"}],"tags":["nvd"],"epss":0.00227,"epssPercentile":0.13641,"ingestedAt":"2026-08-27T14:02:54.021Z","slug":"CVE-2026-41591","body":"## Overview\n\nMarko 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.\n\n## Affected\n\n- `marko < 5.38.36`\n- `marko/runtime-tags < 6.0.164`\n\n## Remediation\n\nUpgrade past the affected range:\n\n- `marko 5.38.36`\n- `marko/runtime-tags 6.0.164`","depth":"sunlit","depthScore":35,"depthScoreParts":{"impact":35.2,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[]}