首页 网络安全 正文
  • 本文约1180字,阅读需6分钟
  • 7
  • 0

Dify Mermaid图表存储型XSS漏洞CVE-2026-21866

摘要

栋科技漏洞库关注到 Dify 在1.11.2之前版本中存在存储型跨站脚本(XSS)漏洞,漏洞追踪为CVE-2026-21866,CVSS 4.0评分为5.1。

Dify 是一款开源大语言模型(LLM)应用开发平台,由国内团队研发,核心目标是降低应用的开发门槛,用于构建生成式 AI 应用程序。

一、基本情况

Dify 优势是可视化开发、全流程管理、多模型兼容、私有化部署、开源免费(社区版),支持私有化部署,兼顾数据安全与灵活扩展。

开发者无需复杂的代码编写,通过 Dify 的可视化配置即可快速搭建智能问答、AI 助手、知识库问答、工作流自动化等各类 LLM 应用。

Dify Mermaid图表存储型XSS漏洞CVE-2026-21866

栋科技漏洞库关注到 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

六、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接