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字符 |
深度内容扫描 |
验证与回滚策略
修复后需执行双重验证:
- 使用测试载荷
graph LR; A[test]-->|exfil|B[((data:image/svg+xml;base64,PHN2Zy8+)))]确认无外联行为
- 通过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