Duplicate Advisory: ProsemirrorToHtml存在因未转义HTML属性值导致的跨站脚本(XSS)漏洞 · GHSA-vfpf-xmwh-8m65 · GitHub Advisory Database
严重性:高
GitHub 已审核 发布时间: 2025年11月7日 · 更新于: 2025年11月10日
已撤回 此公告于2025年11月10日被撤回。
漏洞详情
受影响版本: < 0.2.1 已修复版本: 0.2.1
描述
重复公告 此公告已被撤回,因为它是 GHSA-52c5-vh7f-26fx 的重复版本。保留此链接是为了保存外部引用。
原始描述 影响 prosemirror_to_html gem 由于恶意HTML属性值而容易受到跨站脚本(XSS)攻击。虽然标签内容已正确转义,但属性值没有转义,这允许攻击者注入任意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 输出进行清理:
1 2html = ProsemirrorToHtml.render(document) safe_html = Sanitize.fragment(html, Sanitize::Config::RELAXED) - 实施内容安全策略(CSP): 添加严格的 CSP 标头以防止内联 JavaScript 执行:
1Content-Security-Policy: default-src 'self'; script-src 'self' - 输入验证: 如果可能,在转换前验证和清理 ProseMirror 文档,以防止恶意内容进入系统。
参考
- 漏洞代码:链接
- OWASP XSS 预防备忘单
参考链接
- GHSA-52c5-vh7f-26fx
- etaminstudio/prosemirror_to_html@4d59f94
- 漏洞代码链接
- ruby-advisory-db 相关文件
严重性
高 CVSS 总体评分:7.6/10
CVSS v3 基础指标
- 攻击向量:网络
- 攻击复杂度:低
- 所需权限:低
- 用户交互:需要
- 范围:已更改
- 机密性影响:高
- 完整性影响:低
- 可用性影响:无
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N
弱点 CWE-79 Web页面生成过程中对输入的不当中和(‘跨站脚本’) 产品未能在将用户可控的输入放入用作网页并提供给其他用户的输出之前,对其进行适当中和或其中和方式不正确。在 MITRE 上了解更多信息。
CVE ID: 无已知 CVE GHSA ID: GHSA-vfpf-xmwh-8m65
源代码: etaminstudio/prosemirror_to_html