警惕HTML属性值未转义导致的跨站脚本(XSS)漏洞CVE-2025-64501

本文详细分析了RubyGems包prosemirror_to_html中存在的跨站脚本(XSS)安全漏洞。由于该库在处理ProseMirror文档转换为HTML时,未能正确转义HTML属性值,攻击者可通过注入恶意属性(如javascript:协议或事件处理器)来执行任意代码。文章提供了漏洞的影响范围、攻击向量、补丁信息及临时缓解措施。

跨站脚本(XSS)漏洞:通过未转义的HTML属性值

漏洞标识符:CVE-2025-64501 数据库:GitHub Advisory Database 状态:GitHub已审核 严重等级:高危 发布时间:2025年11月6日 所属项目:etaminstudio/prosemirror_to_html 最后更新:2025年11月17日

漏洞详情

包管理器:bundler 包名称:prosemirror_to_html (RubyGems) 受影响版本:< 0.2.1 已修复版本:0.2.1

描述

影响

prosemirror_to_html gem 存在跨站脚本(XSS)漏洞,攻击者可通过恶意的HTML属性值发起攻击。虽然标签内容已被正确转义,但属性值未被转义,这允许攻击者注入任意的JavaScript代码。

受影响对象

  • 任何使用 prosemirror_to_html 将 ProseMirror 文档转换为 HTML 的应用程序。
  • 处理用户生成的 ProseMirror 内容的应用程序面临最高风险。
  • 查看渲染后的 HTML 输出的终端用户,其浏览器可能会执行恶意 JavaScript。

攻击向量包括

  • 带有 javascript: 协议的 href 属性:<a href="javascript:alert(document.cookie)">
  • 事件处理器:<div onclick="maliciousCode()">
  • 图片上的 onerror 属性:<img src=x onerror="alert('XSS')">
  • 其他可以执行 JavaScript 的 HTML 属性。

补丁

修复程序目前正在开发中。用户应在版本 0.2.1 或更高版本发布后立即升级。

该补丁使用 CGI.escapeHTML 对所有 HTML 属性值进行转义,以防止注入攻击。

临时解决方案

在获得修复版本之前,用户可以实施以下一种或多种缓解措施:

  1. 净化输出:通过像 Sanitize 或 Loofah 这样的净化库处理 HTML 输出:

    1
    2
    
    html = ProsemirrorToHtml.render(document)
    safe_html = Sanitize.fragment(html, Sanitize::Config::RELAXED)
    
  2. 实施内容安全策略(CSP):添加严格的 CSP 头以防止内联 JavaScript 执行:

    1
    
    Content-Security-Policy: default-src 'self'; script-src 'self'
    
  3. 输入验证:如果可能,在将 ProseMirror 文档转换为 HTML 之前,对其进行验证和净化,以防止恶意内容进入系统。

参考

发布者:Spone 发布时间:2025年11月6日 发布至:GitHub Advisory Database, etaminstudio/prosemirror_to_html 由GitHub审核:2025年11月6日 由国家漏洞数据库(NVD)发布:2025年11月10日

严重性

高危

CVSS总体评分:7.6 / 10

CVSS v3 基础指标

  • 攻击向量:网络
  • 攻击复杂度:低
  • 所需权限:低
  • 用户交互:需要
  • 范围:已更改
  • 机密性影响:高
  • 完整性影响:低
  • 可用性影响:无

CVSS向量字符串:CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N

EPSS评分:0.038% (第11百分位)

此分数估计了此漏洞在未来30天内被利用的概率。数据由FIRST提供。

弱点

弱点标识:CWE-79 弱点描述:在网页生成过程中对输入的不当中和(‘跨站脚本’)

该产品在将用户可控的输入放置到用作提供给其他用户的网页的输出中之前,未进行中和或错误地进行了中和。在MITRE了解更多信息。

CVE ID:CVE-2025-64501 GHSA ID:GHSA-52c5-vh7f-26fx

源代码仓库:etaminstudio/prosemirror_to_html

致谢

  • 修复开发者:polypixeldev
  • 报告者:Luke-Oldenburg
  • 修复审查者:Spone
  • 发现者:9021007

此公告已被编辑。请查看历史记录。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计