ProsemirrorToHtml 因未转义的 HTML 属性值存在跨站脚本(XSS)漏洞

ProsemirrorToHtml 存在跨站脚本(XSS)漏洞(未转义的 HTML 属性值) · GHSA-4249-gjr8-jpq3 · GitHub 咨询数据库

漏洞详情

  • 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. 净化输出:将 HTML 输出通过净化库(如 SanitizeLoofah)进行处理:

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

    Content-Security-Policy: default-src 'self'; script-src 'self'
    
  3. 输入验证:如果可能,在转换之前验证并清理 ProseMirror 文档,以防止恶意内容进入系统。

参考

安全评分与指标

严重程度

CVSS 总体评分

8.7 / 10

CVSS v4 基本指标

  • 攻击向量 (AV): 网络 (N)
  • 攻击复杂性 (AC): 低 (L)
  • 攻击前提 (AT): 无 (N)
  • 所需权限 (PR): 无 (N)
  • 用户交互 (UI): 被动 (P)
  • 受影响系统保密性影响 (VC): 高 (H)
  • 受影响系统完整性影响 (VI): 高 (H)
  • 受影响系统可用性影响 (VA): 低 (L)
  • 后续系统保密性影响 (SC): 无 (N)
  • 后续系统完整性影响 (SI): 无 (N)
  • 后续系统可用性影响 (SA): 无 (N)

CVSS 向量字符串: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N

弱点

  • CWE-79: Web页面生成过程中对输入的不当中和('跨站脚本')
  • 该产品在将用户可控的输入放入输出(用作提供给其他用户的网页)之前,未能进行中和或中和不当。

标识符

  • GHSA ID: GHSA-4249-gjr8-jpq3
  • CVE ID: 暂无已知 CVE

源代码

  • etaminstudio/prosemirror_to_html
    更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
    对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

posted @ 2025-12-08 16:21  qife  阅读(3)  评论(0)    收藏  举报