散文编辑器中的类型混淆攻击

  • Calif 近期审计开源知识库管理包Outline:聚焦基于ProseMirror库的复杂编辑器,发现 ProseMirror 渲染过程中的类型混淆问题,导致 Outline 存在存储型跨站脚本攻击 (XSS)漏洞(CVE-2024-40626),认证用户可创建含恶意 JavaScript 有效负载的文档,其他 ProseMirror 编辑器可能也受类似攻击影响,建议用户升级。
  • ProseMirror 相关内容:以 JSON 节点树表示内容,编辑器需定义包含节点规范和标记规范的模式,节点规范包含节点类型、属性、解析 DOM 和转换为 DOM 等信息,渲染过程将 JSON 节点树序列化为 HTML DOM 树,存在安全考虑,可能导致类型混淆攻击和 XSS,如某节点规范的 toDOM 函数易受攻击。
  • Outline 案例研究:使用 ProseMirror 实现通用 React 编辑器,用于多种场景,如文档编辑等,所有节点规范和标记规范定义在特定位置,发现 mention 节点规范的 node.attrs.label 属性易受类型混淆攻击,通过特定 HTTP 请求可利用该漏洞进行攻击,由于 CSP 规则需通过附件链接加载 JavaScript 文件。
  • 建议:更新 toDOM 函数以验证所有节点属性,重新设计编辑器在沙箱 iframe 中渲染内容以减少攻击面,ProseMirror 团队应提供声明节点属性允许类型的便捷方式并为未声明属性强制默认字符串类型。
  • 时间线:7 月 12 日报告给 Outline,7 月 14 日 Outline 修复并联系 ProseMirror 维护者,ProseMirror 更新版本并发布安全指南,7 月 16 日 Outline 发布新版本并发布公告。
阅读 38
0 条评论