Microsoft Copilot Cowork 文件外泄漏洞分析
- #AI安全
- #提示注入
- #Microsoft Copilot
- #数据泄露
- #漏洞分析
概述
Copilot Cowork 是 Microsoft 365 中的一项前沿功能,它使用用户的 Microsoft 权限,并能通过 Microsoft Graph 读取和操作 Microsoft 租户中的数据。
在本文中,我们展示了通过恶意技能中的间接提示注入,攻击者可以从 M365 外泄文件。这是利用了以下事实:与其他敏感操作不同,向当前用户发送电子邮件和 Teams 消息不需要人工批准,而在 Teams 或 Outlook 中打开被篡改的消息会触发攻击者控制的网络请求。
这种风险表明,让代理访问多个系统会扩大提示注入的攻击面。单独来看,代理的预期功能是无害的;但由于集成系统的特性,用户面临风险。这类似于我们之前关于通信应用中 URL 预览成为代理数据出口的研究。由于此风险涉及代理在整個企业生态系统中以委托权限运行的系統設計,而非特定漏洞,我们公開这项研究是为了告知用户使用此类代理产品所承担的风险。
与此风险分开,我们还向微软披露了一个允许直接从 Copilot Cowork 沙箱环境中导出数据的漏洞。
攻击链
微软关于操作批准的文档称:“[Copilot] Cowork 在采取敏感操作(如发送电子邮件或在 Teams 中发布消息)之前会征求您的许可。”然而,在实践中,当接收者是当前用户时,这些操作会立即执行,无需人工批准(用户无法修改此行为)。由于这些消息可以包含触发外部网络请求的外部图像,当用户打开代理发送的被篡改消息时,数据可能被外泄。Copilot Cowork 可以检索用户有权访问的文件的“预认证下载链接”,任何打开该链接的人都可以下载该文件。因此,被操纵的代理可以通过外泄预认证下载链接来外泄文件。
- 受害者拥有存储在 SharePoint 或 OneDrive 中包含 PII 和财务数据的文件的访问权限。
- 受害者向 Copilot Cowork 上传一个包含提示注入的技能文件。对于一般用例,这很常见;用户在网上找到一个文件,然后将其作为技能上传。此攻击不依赖于注入来源——其他注入来源包括但不限于:Claude for Chrome 的网页数据、连接的 MCP 服务器等。 注意: 管理员对“技能”的监督有限,因为 Copilot Cowork 中的技能会自动从用户 OneDrive 中的特定路径加载。
- 受害者要求 Microsoft Copilot Cowork 回顾他们本周的工作,从而触发该技能。
- 注入操纵 Microsoft Copilot Cowork 发布一条 Teams 消息,当该消息被查看时会外泄预认证的文件下载链接。注入告诉 Copilot Cowork 存在一个服务,可以为总结消息创建文档预览;为此,代理检索每个文件的预认证下载链接,并通过恶意 HTML 图片标签将这些 URL 作为查询参数传递给攻击者控制的网站。在此过程中任何时候都不需要人工批准。
- 当用户打开他们的 Teams 消息时,预认证的下载链接被外泄,并且攻击者可以通过访问该链接下载文件。
降低组织风险的措施
Microsoft Copilot Cowork 通过 Microsoft Graph 对用户拥有的几乎所有资源具有读取权限。因此,减少此类攻击影响范围的主要机制是限制整个 Microsoft 生态系统中的过度权限。
为了限制用户检索文件预认证下载链接的能力,管理员可以通过在 SharePoint Online Management Shell 中运行命令来限制从 SharePoint 下载文件:
Set-SPOSite -Identity <SiteURL> -BlockDownloadPolicy $true
或者,基于敏感度标签阻止:
Set-Label -Identity <label> -AdvancedSettings @{BlockDownloadPolicy="true"}
注意: 此配置会影响功能;文档指出,对于受“BlockDownloadPolicy”策略影响的文件,“用户只能通过浏览器访问,无法下载、打印或同步文件。他们也无法通过应用程序(包括 Microsoft 365 应用程序,如 Word、Excel、PowerPoint 等)访问内容。”
模型无关的利用
攻击链最初是在模型选择设置为“auto”的情况下进行的,该设置在 Claude Opus 4.7 和 Claude Sonnet 4.6 之间动态路由。然而,我们通过直接设置模型明确验证了该攻击在更高级的 Opus 4.7 模型上使用完全相同的注入也能成功。Opus 4.7 在搜索最近编辑的文档方面更加全面;它将外泄范围扩大到包括该周之前 Copilot Cowork 会话中使用的所有文档,以及模型设置为“Auto”时发现的存储在更典型文档位置的文件。
提示注入有效性
此提示注入表现出非常高的有效性,我们注意到 Copilot Cowork 在每次试验中(5 次中 5 次)都完成了整个攻击链。此外,攻击不依赖于用户查询的具体措辞——每当模型调用该技能时,注入都会成功。注入仅由 81 行技能文件中的 5 行组成,所有行的长度与其他行相当。
这表明,即使使用最新的模型,仅需一小段恶意文本,间接提示注入就能劫持代理行为。因此,我们敦促读者在处理不受信任的数据(如在线共享的技能)时要谨慎,尤其是当不受信任的数据被放入受信任的上下文(如技能文件)中时。
计划任务加剧风险
在 Copilot Cowork 中,用户可以创建计划任务。计划任务是一个定期执行且无需用户监督的提示。本文中描述的“每周回顾”行为正是用户可能使用计划任务自动化的那种任务。计划任务显著增加了此类攻击的风险面,因为用户不在场无法阻止恶意工作流,并且提示注入可以定期生效。
评论