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 属性值进行转义,以防止注入攻击。
临时缓解措施
在提供修复版本之前,用户可以实施以下一种或多种缓解措施:
-
净化输出:将 HTML 输出通过净化库(如 Sanitize 或 Loofah)进行处理:
html = ProsemirrorToHtml.render(document) safe_html = Sanitize.fragment(html, Sanitize::Config::RELAXED) -
实施内容安全策略 (CSP):添加严格的 CSP 标头以防止内联 JavaScript 执行:
Content-Security-Policy: default-src 'self'; script-src 'self' -
输入验证:如果可能,在转换之前验证并清理 ProseMirror 文档,以防止恶意内容进入系统。
参考
- 易受攻击的代码:https://github.com/etaminstudio/prosemirror_to_html/blob/ea8beb32f6c37f29f042ba4155ccf18504da716e/lib/prosemirror_to_html.rb#L249
- OWASP XSS 预防速查表:https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html
- 其他相关链接已在原报告中列出。
安全评分与指标
严重程度
高
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智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码

公众号二维码


浙公网安备 33010602011771号