Dify Mermaid图表存储型XSS漏洞CVE-2026-21866
Dify 是一款开源大语言模型(LLM)应用开发平台,由国内团队研发,核心目标是降低应用的开发门槛,用于构建生成式 AI 应用程序。
一、基本情况
Dify 优势是可视化开发、全流程管理、多模型兼容、私有化部署、开源免费(社区版),支持私有化部署,兼顾数据安全与灵活扩展。
开发者无需复杂的代码编写,通过 Dify 的可视化配置即可快速搭建智能问答、AI 助手、知识库问答、工作流自动化等各类 LLM 应用。

栋科技漏洞库关注到 Dify 在1.11.2之前版本中存在存储型跨站脚本(XSS)漏洞,漏洞追踪为CVE-2026-21866,CVSS 4.0评分为5.1。
二、漏洞分析
CVE-2026-21866漏洞位于 Dify 在1.11.2之前版本中,这是在渲染聊天界面中的 Mermaid 图表时存在的存储型跨站脚本(XSS)漏洞。
Dify 默认将 Mermaid 渲染引擎的 securityLevel 配置为 loose,这允许 Mermaid 图表中包含并执行不安全的 HTML 和 JavaScript 内容。
const initMermaid = () => {
if (typeof window !== 'undefined' && !isMermaidInitialized) {
try {
const config: MermaidConfig = {
startOnLoad: false,
fontFamily: 'sans-serif',
securityLevel: 'loose',
flowchart: {
htmlLabels: true,
useMaxWidth: true,
curve: 'basis',
nodeSpacing: 50,
rankSpacing: 70,
},
攻击者可以通过在对话中注入恶意的 Mermaid 代码块,当其他用户(包括管理员)查看该对话时,恶意脚本将在其浏览器环境中执行。
在Mermaid甘特图中,你可以为任务附加点击事件,将它们定向到JavaScript回调函数或外部链接。
此功能仅在securityLevel设置为“loose”时可用,当securityLevel设置为“strict”时,此功能将被禁用。
click taskId call callback(arguments)
click taskId href URL
这种配置允许用户通过使用javascript协议,将基于javascript的载荷嵌入到聊天机器人对话中。
该漏洞可能导致聊天对话中存储的跨站点脚本攻击,利用该漏洞创建恶意聊天内容,当这些内容被分享时,将危及受害者的会话安全。
三、POC概念验证
在Dify应用中创建一个聊天机器人。
在聊天输入框中输入以下有效内容:
管理员已设置登录后刷新可查看发送消息后,点击生成的元素,并观察弹出元素是否被执行。
四、影响范围
Dify < 1.11.2
五、修复建议
Dify >= 1.11.2
六、参考链接
管理员已设置登录后刷新可查看