CVE-2025-64501CVE-2025-64501是prosermirror_to_html Ruby gem中的一个高危跨站脚本(XSS)漏洞。该漏洞存在于版本0.2.0及以下版本中,源于该库在将ProseMirror兼容的JSON文档转换为HTML输出时,对标签内容进行了适当的转义处理,但对HTML属性值却缺乏相应的安全转义机制。攻击者可以利用这一漏洞,通过构造包含恶意HTML属性值的ProseMirror文档,在受害者的浏览器中注入任意JavaScript代码。所有使用该gem进行文档转换的应用程序都将受到影响,尤其是那些允许用户提交ProseMirror文档内容并将其渲染为HTML的应用。此类应用的用户在查看渲染后的HTML输出时,将面临被窃取会话cookie、劫持用户账号、执行恶意操作等安全风险。该漏洞已于版本0.2.1中得到修复,开发者应立即升级以消除安全威胁。
该XSS漏洞的根本原因在于prosermirror_to_html gem在HTML渲染过程中,对不同部分的处理方式不一致。当库接收到ProseMirror文档的JSON表示时,它会解析文档结构并生成相应的HTML标签。对于标签之间的文本内容(innerHTML),库调用了适当的HTML转义函数来防止XSS攻击。然而,在处理HTML标签的属性值时,代码直接使用了未经过滤的用户输入数据,导致恶意构造的属性值可以被浏览器解析为可执行代码。攻击者可以在ProseMirror文档的节点属性中嵌入JavaScript事件处理器(如onerror、onload、onclick等)或javascript:伪协议URL,当这些属性被渲染到HTML输出中并被用户浏览器解析时,嵌入的恶意脚本代码将被执行。由于该gem通常用于将富文本编辑器的内容转换为可在网页中显示的HTML,因此任何使用此库的应用都可能在用户提交的内容渲染时触发漏洞。