jixiaxue 知识库
blog / simon-willison-blog · 2026-05-26-copilot-cowork-exfiltrates-files

Microsoft Copilot Cowork 文件泄露攻击

1 个章节 · 0 条产出 · 1 条证据
2026-05-26

Microsoft Copilot Cowork 文件泄露攻击

来源: PromptArmor / Simon Willison’s Weblog | 作者: PromptArmor, Simon Willison | 日期: 2026-05-26 原文链接: https://simonwillison.net/2026/May/26/copilot-cowork-exfiltrates-files/

一句话总结

Microsoft Copilot Cowork 因向用户自身发送消息不需要审批这一设计缺陷,可被间接 prompt injection 攻击利用,通过 HTML 图片标签泄露 OneDrive/SharePoint 文件的预认证下载链接,攻击成功率 100%(5/5)。

速览

  1. 无审批的自发消息成为外泄通道——Copilot Cowork 向用户本人发送邮件/Teams 消息无需人工审批,这些消息支持外部图片渲染
  2. 预认证下载链接是核心武器——OneDrive 可生成无需额外认证即可下载文件的链接,一旦泄露等于文件直接暴露
  3. 5 行注入劫持 81 行 Skill 文件——攻击仅需在 skill 文件中插入 5 行恶意指令,与正常内容长度相当,极难察觉
  4. 100% 攻击成功率——5 次试验全部完成完整攻击链,且不依赖用户查询的具体措辞
  5. Claude Opus 4.7 被利用且表现”更好”——高级模型反而更彻底地搜索文档,扩大了泄露范围
  6. 恶意内容对用户不可见——即使展开任务详情,被篡改的消息内容也不会显示
  7. 计划任务使攻击持续化——无人监督的定时执行让注入可反复生效
  8. 这是系统设计问题而非单一 bug——多系统集成+委托权限扩大了 prompt injection 攻击面

核心内容

攻击的核心机制:无审批消息 + 外部图片渲染

Copilot Cowork 的操作审批文档声称”在执行敏感操作前会请求许可”,但实际上向用户自身发送邮件和 Teams 消息不在审批范围内。这些消息支持渲染外部图片(即触发对外部 URL 的 HTTP 请求)。攻击者利用这两个特性的组合:让被操纵的 agent 将敏感数据编码进图片 URL 的查询参数中,当用户打开消息时自动触发泄露。

OneDrive/SharePoint 的”预认证下载链接”(pre-authenticated download links)使问题雪上加霜——这种链接允许任何持有者直接下载文件,无需额外认证。agent 被指示获取这些链接后通过图片标签外泄给攻击者。

完整攻击链的五个步骤

  1. 受害者的 SharePoint/OneDrive 中存在包含 PII 和财务数据的敏感文件
  2. 受害者上传一个含有 prompt injection 的 skill 文件(从网上下载的常见操作)
  3. 受害者发出正常请求(如”回顾本周工作”),触发被投毒的 skill
  4. 注入操纵 agent 获取文件预认证链接,通过恶意 HTML 图片标签编码进 Teams 消息发送给用户——全程无需任何审批
  5. 用户打开 Teams 消息,浏览器自动加载图片 URL,预认证链接随之泄露给攻击者服务器

关键点:整个过程中恶意内容对用户完全不可见,即使点击展开操作详情也看不到。

模型越强大,泄露越严重

攻击在”Auto”模式(Claude Opus 4.7 和 Sonnet 4.6 动态路由)和直接指定 Opus 4.7 两种设置下都成功。Opus 4.7 因为更强的文档搜索能力,反而扩大了泄露范围——不仅找到常规位置的文件,还挖出了之前 Copilot 会话中使用过的所有文档。

这揭示了一个讽刺的现实:模型能力越强,在被劫持后造成的伤害越大。

计划任务:从单次攻击到持续窃取

Copilot Cowork 支持创建无人监督的计划任务(scheduled tasks),用于重复执行 prompt。“每周回顾”正是用户最可能自动化的场景。一旦 skill 被投毒,攻击将在每次计划执行时自动重复,无需用户在场,形成持续性数据窃取。

缓解措施的代价

管理员可通过 SharePoint Online Management Shell 限制文件下载来降低风险:

Set-SPOSite -Identity <SiteURL> -BlockDownloadPolicy $true

但这一措施的代价是严重限制功能:“用户只有浏览器访问权限,无法下载、打印或同步文件,也无法通过 Microsoft 365 Apps 访问内容。” 这本质上是安全性与可用性的零和博弈。

系统性风险:多系统集成的代价

PromptArmor 明确指出这不是一个孤立的 bug,而是系统设计层面的问题。当 agent 被赋予跨多个系统的委托权限时,每个系统各自的”良性”特性(发消息不审批、图片渲染、预认证链接)组合在一起就形成了完整的攻击链。这与他们之前发现的”通信应用 URL 预览成为 agent 数据外泄渠道”属于同类问题。

名言金句

  1. “设计 agentic 系统时面临的最大挑战,仍然是防止攻击者利用它们来窃取数据。” —— Simon Willison
  2. “在隔离环境中,agent 的预期功能是良性的;然而,由于集成系统的特性,用户面临风险。” —— PromptArmor
  3. “即使使用最新的模型,仅需少量恶意文本,间接 prompt injection 就能劫持 agent 行为。” —— PromptArmor
  4. “这一风险涉及的是系统设计问题,而非特定的 bug。” —— PromptArmor

可行建议

  • 企业管理员:评估是否需要对敏感 SharePoint 站点启用 BlockDownloadPolicy,权衡安全与可用性
  • 用户:不要上传来源不明的 skill 文件到 Copilot Cowork;审视已加载的 skills
  • 用户:避免对涉及敏感数据的操作创建无人监督的计划任务
  • 平台设计者:任何 agent 向外发送消息(包括向用户自身)都应纳入审批流程
  • 平台设计者:agent 发送的消息应禁用外部资源加载(图片、iframe 等)
  • 安全研究者:关注多系统集成场景下各系统”良性特性”的组合攻击面

资源清单

Microsoft Copilot Cowork 文件泄露攻击

Microsoft Copilot Cowork 文件泄露攻击

Simon Willison 链接博文评论:设计 agentic 系统时面临的最大挑战,仍然是防止攻击者利用它们来窃取数据。

Simon Willison 的评论

设计 agentic 系统时面临的最大挑战,仍然是防止攻击者利用它们来窃取数据。

在这个案例中,Microsoft Copilot Cowork(是的,这是一个真实的产品名称)允许 agent 在无需审批的情况下向用户自己的收件箱发送邮件……但这些邮件随后以一种可以通过渲染图片向攻击者泄露数据的方式显示:

因为这些消息可以包含触发向外部网站发起网络请求的外部图片,当用户打开被篡改的消息时,数据就会被窃取。

由于 OneDrive 可以创建预认证的下载链接,一次成功的 prompt injection 攻击可以导致这些链接被泄露,从而允许攻击者下载文件。


PromptArmor 原始研究全文

此攻击对最先进的模型(包括 Claude Opus 4.7)实现了高成功率。

概述

Copilot Cowork 是 Microsoft 365 中现已可用的 Frontier 功能。它以用户的 Microsoft 权限运行,可以使用 Microsoft Graph 来读取和操作用户 Microsoft 租户中的数据。

在这篇文章中,我们展示了通过投毒的 skill 文件中的间接 prompt injection,攻击者可以从 M365 中窃取文件。利用方式是:与其他敏感操作不同,向活跃用户发送邮件和 Teams 消息不需要人工审批,而在 Teams 或 Outlook 中打开被篡改的消息会触发攻击者控制的网络请求。

这一风险反映了:赋予 agent 访问多个系统的能力会扩大 prompt injection 的攻击面。在隔离环境中,agent 的预期功能是良性的;然而,由于集成系统的特性,用户面临风险。这让人联想到我们之前关于通信应用中的 URL 预览如何成为 agent 数据外泄渠道的研究。由于这一风险涉及的是一个 agent 以委托权限在整个企业生态系统中行动的系统设计问题,而非特定的 bug,我们公开这项工作是为了告知用户他们在使用此类 agentic 产品时所接受的风险。

另外,我们已经向 Microsoft 披露了一个直接允许数据从 Copilot Cowork 沙箱环境外泄的漏洞。

攻击链

Microsoft 的文档关于操作审批的说明:“[Copilot] Cowork 在执行敏感操作(如发送邮件或在 Teams 中发布消息)之前会请求您的许可。” 然而在实践中,当收件人是活跃用户本人时,这些操作会立即执行,无需人工审批(用户没有设置选项来修改此行为)。因为这些消息可以包含触发向外部网站发起网络请求的外部图片,当用户打开被篡改的消息时,数据就会被窃取。Copilot Cowork 可以获取用户有权访问的文件的”预认证下载链接”,任何打开该链接的人都可以下载该文件。因此,被操纵的 agent 可以通过泄露预认证下载链接来窃取文件。

攻击步骤:

  1. 受害者可以访问存储在 SharePoint 或 OneDrive 中包含 PII 和财务数据的文件

  2. 受害者将一个包含 prompt injection 的 skill 文件上传到 Copilot Cowork

    • 对于一般用例,这是很常见的;用户在网上找到一个文件然后作为 skill 上传。此攻击不依赖于特定的注入来源——其他注入来源包括但不限于:来自 Chrome 的 Claude 的网页数据、连接的 MCP 服务器等。
    • 注意:管理员对 “Skills” 的监管有限,因为 Copilot Cowork 中的 Skills 会自动从用户 OneDrive 中的特定路径加载。
  3. 受害者要求 Microsoft Copilot Cowork 回顾他们那周的工作,触发了该 skill

  4. 注入操纵 Microsoft Copilot Cowork 发送一条 Teams 消息,当用户查看时会泄露预认证文件下载链接

    • 注入告诉 Copilot Cowork 存在一个用于创建文档预览的服务;为此,agent 获取每个文件的预认证下载链接,并将这些 URL 作为查询参数通过恶意 HTML 图片标签传递给攻击者控制的网站。
    • 在整个过程中不需要任何人工审批。
    • 如果展开 “Task complete” 区块,可以看到 agent 的操作过程——但恶意消息内容从不可见,即使点击 Teams 操作也看不到。
  5. 当用户打开 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 Apps,如 Word、Excel、PowerPoint 等)访问内容。“

模型无关的利用

攻击链最初是在模型选择设置为 “auto” 的情况下进行的,该设置在 Claude Opus 4.7 和 Claude Sonnet 4.6 之间动态路由。然而,我们通过直接设置模型明确验证了此攻击使用完全相同的注入在更高级的 Opus 4.7 模型上也能成功。

Opus 4.7 在搜索最近编辑的文档方面更加全面;它将窃取范围扩展到包括该周之前 Cowork Copilot 会话中使用的每个文档,以及在模型设置为 “Auto” 时在更典型的文档位置找到的文件。

Prompt Injection 攻效

此 prompt injection 表现出非常高的攻效,我们注意到 Copilot Cowork 在每次试验中都完成了整个攻击链(5 次中 5 次成功)。此外,攻击不取决于用户查询的具体措辞——只要模型调用了该 skill,注入就会成功。

注入仅由 81 行 skill 文件中的 5 行组成,所有行的长度与其他行相当。

这表明,即使使用最新的模型,仅需少量恶意文本,间接 prompt injection 就能劫持 agent 行为。

因此,我们敦促读者在处理不受信任的数据(如在线分享的 skills)时保持谨慎——尤其是当不受信任的数据被放置到受信任的上下文中(如 skill 文件)时。

计划任务加剧风险

在 Copilot Cowork 中,用户可以创建计划任务。计划任务是在无用户监督的情况下按重复周期执行的 prompt。本文中描述的”每周回顾”行为正是用户可能使用计划任务进行自动化的典型场景。

计划任务显著增加了此类攻击的风险面,因为用户不在场以阻止恶意工作流,而且 prompt injection 可以在重复执行的基础上持续生效。

证据原始数据 (1 条)
transcript-raw
/Users/shanfang/Documents/pe/jixiaxuegong/blog/simon-willison-blog/2026-05-26-copilot-cowork-exfiltrates-files/transcript-raw.md