CVE-2025-66400mdast-util-to-hast是一个用于将mdast格式(markdown抽象语法树)转换为hast格式(HTML抽象语法树)的开源JavaScript库。该库被广泛应用于markdown渲染器、静态站点生成器、博客系统等场景。2025年披露的安全漏洞影响版本13.0.0至13.2.1,漏洞根源在于该库在处理markdown源代码时未能正确过滤字符引用(character references)。攻击者可以利用HTML字符引用(如a或a)在代码块的class属性中注入额外的classname,从而绕过页面的CSS样式隔离机制。当用户查看包含恶意markdown内容的页面时,攻击者注入的class可能使代码元素呈现与页面其他部分一致的样式,进而可能被利用于钓鱼攻击或视觉欺骗,例如将恶意代码伪装成可信内容诱导用户操作。
该漏洞存在于mdast-util-to-hast库的classname处理逻辑中。从13.0.0版本开始,库引入了对代码块classname的支持,但在实现时未对用户输入进行充分的字符引用解码验证。具体问题在于:当markdown源代码中包含HTML字符引用(如a代表字母a)时,库会将其解码并直接拼接到class属性中,而不会进行多次解码或验证。攻击者可以构造特殊的字符引用序列,使得多个解码后的字符组合形成额外的classname。例如,通过精心设计的字符引用序列,攻击者可以在一个代码块标签中注入多个class,分割原始的classname,或完全覆盖原有的class属性。由于渲染后的HTML代码元素获得了与页面其他元素相同的class,攻击者可以应用页面的全局CSS样式,使恶意内容看起来像是页面的原生组成部分,从而实施钓鱼或欺骗攻击。