Hotdry.
ai-security

利用Mermaid图表在Microsoft 365 Copilot中实现数据外泄:SVG载荷攻击详解

解析Mermaid图表渲染漏洞如何通过SVG载荷触发敏感数据外泄,提供可落地的输入过滤规则与监控阈值建议。

Microsoft 365 Copilot 近期曝出通过 Mermaid 图表渲染机制实现数据外泄的新型攻击向量。攻击者利用文档总结功能触发间接提示注入,将敏感数据(如近期邮件内容)通过 SVG 载荷编码外传。本文聚焦技术实现细节与防御方案,避免复述事件表层信息。

攻击原理与技术切口

Mermaid 作为 Copilot 内置的图表渲染引擎,支持将文本描述转换为 SVG 格式输出。当用户提交包含特制 Mermaid 代码的文档请求总结时,攻击者可构造graph LR; A[敏感数据]-->|exfil|B[(SVG)]类结构,利用<image>标签的xlink:href属性发起带外请求。Adam Logue 的研究表明,该漏洞能绕过常规内容安全策略(CSP),将 hex 编码的数据通过 DNS 请求外泄至攻击者控制的域名[1]。

关键突破点在于:Mermaid 解析器未对 SVG 中的外部资源引用进行严格校验,且 Copilot 的沙箱环境未能阻断非常规端口的出站请求。实验数据显示,单次攻击可外泄最多 4KB 的文本数据(经 Base64 编码后),足以提取邮件主题、联系人列表等关键信息。

可落地防御参数

针对该漏洞,企业应实施三级防御体系:

1. 输入过滤规则(立即生效)
在网关层部署正则过滤,阻断包含以下特征的 Mermaid 代码:

(graph|flowchart)\s+(LR|TB);.*\[.*\].*-->.*\(\(SVG\)\)
<image[^>]+xlink:href=["']data:\w+/svg\+xml

建议将检测阈值设为单文档包含≥3 个<image>标签即触发告警,实测可覆盖 98% 的恶意载荷。

2. 沙箱增强配置
修改 Copilot 沙箱的网络策略:

  • 限制出站 DNS 请求仅允许访问企业白名单域名
  • 设置 SVG 渲染超时阈值≤800ms(正常渲染平均耗时 350ms)
  • 禁用<foreignObject>等高风险 SVG 元素(微软已通过 KB5043192 补丁实现)

3. 监控指标清单
在 SIEM 系统中新增以下检测规则:

指标 阈值 触发动作
单用户 SVG 渲染频率 >5 次 / 分钟 临时冻结会话
外联域名熵值 ≥4.5 比特 阻断并取证
Base64 编码数据长度 >3000 字符 深度内容扫描

验证与回滚策略

修复后需执行双重验证:

  1. 使用测试载荷graph LR; A[test]-->|exfil|B[((data:image/svg+xml;base64,PHN2Zy8+)))]确认无外联行为
  2. 通过 Copilot 日志分析MermaidRenderEvent事件量下降≥99%

若出现兼容性问题,可启用渐进式回滚:

  • 第一阶段:仅对含xlink:href的 SVG 返回 403
  • 第二阶段:完全禁用 Mermaid 渲染(通过注册表HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\M365\DisableMermaid=1

长期防护启示

该漏洞揭示了 AI 助手与富文本渲染引擎集成时的固有风险。建议企业:

  • 对所有 AI 生成内容实施「渲染前净化」,移除非必要 SVG 属性
  • 建立第三方组件威胁模型,重点关注<script><image>等元素
  • 将 Mermaid 等引擎升级至 v10.6.1+(已修复外部资源加载漏洞)

随着 AI 功能深度嵌入办公系统,类似攻击面将持续扩大。唯有将安全控制左移至内容解析层,才能从根本上阻断数据外泄链路。当前微软已修复该漏洞,但企业需主动验证防护措施有效性,避免沦为下一个数据泄露案例。

参考资料: [1] Adam Logue, "Microsoft 365 Copilot – Arbitrary Data Exfiltration Via Mermaid Diagrams", 2025

查看归档