漏洞概述
此公告是一个重复公告,因其与 GHSA-52c5-vh7f-26fx 重复而于 2025年11月10日被撤销。保留此链接是为了维护外部引用。
原始描述
影响
prosemirror_to_html gem 存在跨站脚本漏洞,攻击者可通过恶意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属性值进行转义,以防止注入攻击。
临时缓解措施
在获得修复版本之前,用户可以实施以下一项或多项缓解措施:
- 净化输出: 通过如 Sanitize 或 Loofah 这样的净化库处理HTML输出:
|
|
- 实施内容安全策略: 添加严格的CSP头部以防止内联JavaScript执行:
|
|
- 输入验证: 如果可能,在转换之前验证并净化 ProseMirror 文档,以防止恶意内容进入系统。
技术详情
包 bundler prosemirror_to_html (RubyGems)
受影响版本 < 0.2.1
已修复版本 0.2.1
严重性 高 CVSS 总体得分:7.6 CVSS v3 基准指标:AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N
弱点 CWE-79: 在网页生成过程中对输入的不当中和(跨站脚本)
参考链接
- GHSA-52c5-vh7f-26fx
- etaminstudio/prosemirror_to_html@4d59f94
- 易受攻击的代码:
https://github.com/etaminstudio/prosemirror_to_html/blob/ea8beb32f6c37f29f042ba4155ccf18504da716e/lib/prosemirror_to_html.rb#L249 - OWASP XSS 防护备忘单
- RubySec 咨询数据库条目