Frappe Framework 17.0.0-dev - 存储型XSS漏洞 漏洞概述 漏洞名称: Frappe Framework 17.0.0-dev - Stored XSS in Form Dashboard headline rendering 漏洞类型: 存储型跨站脚本攻击 (Stored XSS) CVSS评分: 4.6 (中等) CVE ID: CVE-2026-50705 发现者: Oscar Unbe (Fluid Attacks AI SAST Scanner) 发布日期: 2026年6月24日 影响范围 受影响产品: Frappe Framework 受影响版本: 17.0.0-dev 远程可利用: 是 利用条件: 攻击者可以影响嵌入到标题消息中的值,注入任意HTML或JavaScript代码,当查看受影响表单时执行。 修复方案 当前状态: 暂无补丁可用 建议: 等待官方发布修复补丁 漏洞详情 漏洞描述 在Frappe Framework版本17.0.0-dev中存在跨站脚本(XSS)漏洞,原因是Form Dashboard标题渲染器未能正确清理不受信任的输入。标题渲染管道接受HTML字符串,并使用jQuery的.html()方法插入到Desk表单中,没有进行清理。 漏洞路径 1. Case A: Event.google_meet_link 到 headline HTML sink - 来源:google_meet_link 从Google Calendar hangoutLink同步中填充 - 客户端插值:Event表单刷新构建HTML,直接插入到锚点属性中 - 标题分发链:frm.dashboard.set_headline(...) -> frm.set_headline(...) -> frm.layout.show_message(...) - 最终行为:frappe.utils.is_html(html) 仅检查HTML元素的存在 - 如果true,show_message使用.html(...)(未清理的插入) - 影响:存储在google_meet_link中的恶意payload可以在受害者打开/重新加载Event表单时执行 2. Case B: helper路径强制HTML分支 - set_headline_alert(text, ...) 将输入包装为 - 这保证了 is_html(...) == true 并将内容路由到 .html(...) 分支 - 任何通过未清理/回显文本到达 set_headline_alert 的脚本都会到达相同的sink 相关代码 概念验证代码 1. 登录并保持会话cookie 2. 使用伪造的google_meet_link有效负载创建事件 3. 打开创建的事件表单 预期结果 仪表板标题渲染并执行 alert(9771) 当恶意HTML被解析时