重复公告:ProseMirrorToHtml因未转义HTML属性值存在跨站脚本(XSS)漏洞
漏洞详情
包名: bundler 受影响版本: < 0.2.1 已修复版本: 0.2.1
漏洞描述
重复公告 此公告已被撤回,因为它是GHSA-52c5-vh7f-26fx的重复公告。保留此链接以维护外部引用。
原始描述
影响 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属性值,以防止注入攻击。
临时解决方案 在提供修补版本之前,用户可以实施以下一项或多项缓解措施:
-
净化输出:通过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文档,以防止恶意内容进入系统。
参考链接
- 易受攻击的代码:https://github.com/etaminstudio/prosemirror_to_html/blob/ea8beb32f6c37f29f042ba4155ccf18504da716e/lib/prosemirror_to_html.rb#L249
- OWASP XSS预防备忘单
技术详情
严重程度: 高 CVSS评分: 7.6/10 弱点类型: CWE-79 - 在网页生成期间输入中和不当(跨站脚本)
CVSS v3基础指标:
- 攻击向量:网络
- 攻击复杂度:低
- 所需权限:低
- 用户交互:需要
- 范围:已更改
- 机密性:高
- 完整性:低
- 可用性:无