CVE-2026-41591Marko 是用于构建 Web 应用的声明式 HTML 语言。在 5.38.36 版本前的 Marko 和 6.0.164 版本前的 @marko/runtime-tags 中,动态文本插入 <script> 或 <style> 标签时存在缺陷。若结束标签使用非小写(如 </SCRIPT>),运行时无法防止标记越界。攻击者可借此注入任意 HTML/JS,导致跨站脚本攻击。官方已发布补丁修复该问题。
该漏洞源于 Marko 运行时对 HTML 标签大小写的处理逻辑不完善。尽管 HTML 标准规定标签名不区分大小写,但 Marko 的上下文自动转义机制仅针对小写的闭合标签(如 </script>)进行了防御。当攻击者能够控制输入并将其插入到 <script> 或 <style> 块中时,如果输入包含大写字母形式的闭合标签(例如 </SCRIPT> 或 </Style>),Marko 的过滤器无法识别其为危险字符,从而未对其进行转义。这导致恶意字符串被原样渲染到 HTML 页面中。浏览器在解析 HTML 时会将 </SCRIPT> 视为有效的结束标记,从而跳出当前的脚本或样式块,使得攻击者后续注入的任意 HTML 或 JavaScript 代码得以执行。由于该漏洞发生在客户端渲染层面,且涉及脚本上下文破坏,其 CVSS 评分具备范围改变(S:C)特性。