一项针对 Copilot for Word 的文档携带型 AI 蠕虫 PoC,展示了隐藏指令如何从外部 Word 文件进入 AI 上下文,再被复制到新生成的内部文档。企业需要把文档安全边界从文件能否打开扩展到内容能否进入模型、生成物能否继续传播,并用上下文隔离、来源追踪和发布门禁控制整条链路。
阅读时间:约 9 分钟
先说清证据边界
安全研究者 Håkon Måløy 于 2026 年 7 月 28 日发布了 Context Collapse, Part 3。文章称,研究经过 144 天协调披露,微软安全响应中心和产品团队收到复现步骤、视频、环境假设与 PoC Prompt。
公开材料支持以下结论:
- 研究者在外部 Word 文档中放入白底白字、小字号的隐藏指令。
- 文档进入 Copilot for Word 上下文后,PoC 中的财务数字被修改,隐藏指令也被复制进新文档。
- 后续 Copilot 会话只使用这份新文档,没有再次使用原始恶意文件,攻击行为仍然触发并继续复制。
- 原始文件可以由用户主动附加,也可能在研究者测试的 Work IQ 检索场景中被 Copilot 选入上下文。
- 微软修复了研究者最初提交的具体 Payload。研究者随后修改 Payload,并报告在 7 月 28 日仍能复现这一漏洞类别。
它也有明确限制:
- 公开文章没有给出完整 Payload,第三方无法只靠文章独立复现。
- 微软尚未发布一份逐项确认这条 Word 传播链的产品公告或 CVE。
- 文档不会自行打开、执行代码或扫描网络。传播需要经过 Copilot 处理、生成新文件、共享或保存,以及下游再次使用等条件。
因此,准确说法是:研究者在报告环境中演示了文档之间的条件式自传播。它属于 AI 工作流的信息完整性风险,与传统网络蠕虫存在机制差异。
这一复制机制已有独立学术先例。Morris II 论文 在研究团队自建的 RAG 邮件助手环境中演示了自复制自然语言 Prompt:模型从检索邮件中读取攻击指令和恶意任务,再把它们复制到生成输出,让后续工作流继续检索新的载体。Morris II 证明的是实验室机制,未测试商业办公套件;Måløy 的披露提供了 Copilot for Word 的直接 PoC。两类证据结合后,可以确认复制型 Prompt 具备技术可行性,同时仍需保留产品范围和触发条件。
为什么白底白字能越过传统防线
传统文档安全主要寻找宏、漏洞利用、恶意链接和可执行内容。间接提示注入利用的是另一种能力:模型会把自然语言数据误当成指令。
研究者解释,Word 在把文档交给底层模型前会剥离字体颜色、字号等排版信息。人眼看到的是一份正常文件,模型接收到的文本里仍然包含隐藏指令。模型的输入与用户的页面视图已经分离。
微软在 间接提示注入防护说明 中确认了这一通用风险:网页、邮件、共享文档、工具返回值等外部内容都可能被模型误认为合法命令。Defender for Office 365 文档 还列出了隐藏文本、附件、PDF、图片、元数据和编码内容等载体。
同一份文件由此产生四种不同的安全状态:
- 可以安全地在 Word 中打开。
- 可以安全地交给人阅读。
- 进入能遵循指令的模型上下文时存在风险。
- 作为 AI 生成新文档的来源时,风险可能沿派生关系传递。
第四种状态最容易被现有权限体系忽略。外部材料经过员工和 Copilot 生成后,文件所有者、保存位置和组织身份都变成了内部信号,来源风险却仍然存在。
把传播链拆成五道门
文档携带型 AI 蠕虫依赖一条完整信息流。每个阶段都可以设置阻断点。
| 阶段 | 攻击所需条件 | 对应防线 |
|---|---|---|
| 外部进入 | 攻击者控制的文档进入组织 | 来源标记、渠道扫描、附件策略 |
| 上下文准入 | Copilot 主动读取或检索该文档 | 上下文白名单、信任标签、数据标记、隔离区 |
| 模型受影响 | 隐藏内容改变模型行为 | Prompt Shields、Spotlighting、计划漂移检测 |
| 生成派生文件 | 新文档被篡改或携带隐藏指令 | 可见差异、隐藏内容扫描、数字与引用核对 |
| 下游复用 | 派生文件再次进入 AI 工作流 | 来源追踪、发布状态、准入策略 |
单一检测器只能覆盖其中一段。微软的 Secure Future Initiative 防护模式 明确建议组合概率性和确定性控制,包括数据标记、信息流控制、隔离推理、最小权限、短期权限、Critic Agent、工具链分析和人工确认。它还要求系统按部分注入会成功来设计,把影响限制在可控范围内。
一套可执行的上下文隔离流程
第一道门:文件进入时记录来源
文件一进入组织,就应获得机器可读的来源和信任状态:
document:
id: sha256:...
source_type: external_partner
source_channel: sharepoint_guest
trust_state: untrusted
permitted_use:
- read_only_extraction
prohibited_use:
- autonomous_edit
- external_send
- financial_posting
复制到内部文件夹只能改变位置,不能自动改变来源。AI 生成的新文档还应保存全部上游文件的标识。
第二道门:比较人眼页面与模型输入
在文档进入模型前执行确定性提取:
- 提取正文、批注、修订、页眉页脚、形状、替代文本、字段与元数据。
- 检测白底白字、零字号、超小字号、隐藏、页面外文本和异常样式。
- 对比页面渲染结果与纯文本提取结果。
- 规范化异常 Unicode、编码块和分段混淆文本。
- 保存原文件哈希与提取快照。
这能发现隐藏方式,仍然无法证明剩余自然语言全部安全。一句看起来正常的文字也可能在特定任务中构成恶意指令。
第三道门:只读隔离区负责理解
外部文档先进入无写权限的推理区。模型可以提取事实、生成候选摘要或标记风险,但无法直接修改共享文档、发送邮件、操作财务系统。
系统指令、用户任务和外部材料需要分别封装。通过 Spotlighting 或数据标记明确不可信内容边界。如果模型发现来源材料中包含命令式文本,应输出结构化警报,由外层策略决定后续动作。
高风险场景可拆成两段:
外部文档
-> 隔离提取与分类
-> 带来源位置的候选事实
-> 受控成稿
-> 自动核验与人工审批
-> 正式发布
任务允许时,第二段只接收已经批准的事实和来源片段,避免把整份不可信文件再次放入生成上下文。
第四道门:生成物默认继续隔离
AI 生成的新文件初始状态应是 quarantined_generated。经过验证后才能提升为正式内部文档。
发布门禁至少检查:
- 隐藏文本、元数据和嵌入对象;
- 模型所有编辑的可见 Diff;
- 人名、日期、金额、比例和引用的来源;
- 与权威内部台账的确定性对账;
- 新增命令式文本、链接、样式和字段;
- 财务、法务、对外材料的具名审批。
输入过滤只保护当前一次运行。生成后门禁保护下一次运行。
第五道门:记录文档血缘
每次 AI 处理都应产生一条血缘事件:
{
"run_id": "copilot-run-...",
"output_document": "sha256:...",
"source_documents": ["sha256:...", "sha256:..."],
"model_action": "draft",
"trust_state": "quarantined_generated",
"review": {
"status": "approved",
"reviewer": "role:finance-controller"
}
}
下游 AI 工作流可以据此拒绝未经审批的派生文件。出现事故时,安全团队也能从一份可疑文档反向找到来源,向前列出全部后代。
检测失效后,权限仍应有效
微软把系统 Prompt、Spotlighting 和 Prompt Shields 归为降低攻击成功概率的措施。权限、人工同意、数据治理和危险动作阻断负责控制后果。
不同动作需要不同硬门槛:
| 动作 | 最小控制 |
|---|---|
| 读取外部文档 | 只读上下文、来源标签、提取日志 |
| 生成个人工作草稿 | 输出隔离、隐藏内容扫描 |
| 修改权威内部文件 | 明确 Diff、文件负责人审批 |
| 对外发布或共享 | DLP、来源检查、具名审批 |
| 发送邮件或消息 | 收件人和正文预览、用户确认 |
| 修改财务或运营数据 | 确定性对账、独立授权 |
| 使用用户身份调用工具 | 最小权限、短期授权、动作白名单 |
这一思路与 AI Coding Agent 的安装前信任边界 相同:不可信输入先获得最小能力,验证证据决定它能否进入更高权限区。
发现可疑文件后如何追踪
文档已经进入内部共享区时,处置重点是找出全部派生文件:
- 冻结可疑文件并计算哈希。
- 在无 AI 的解析环境中提取可见、隐藏和元数据内容。
- 通过血缘记录查找源文件、模型运行、编辑、审批、共享位置和全部后代。
- 隔离未经重新核验的派生文件,暂停自动复用。
- 搜索相同隐藏格式、重复指令片段、异常数字变换和嵌入对象。
- 核对 Prompt、工具调用、文件访问和审批日志。
- 从独立权威来源恢复被修改的数据。
- 把实际样本加入扫描规则、准入策略和回归测试。
微软的 Prompt abuse 事件响应手册 提出了工具清单、Prompt 与数据监控、条件访问、DLP、审计日志和持续治理。文档血缘补上了这些事件之间的派生关系。
应该测哪些指标
防线需要沿传播链测量:
- 带来源和信任标签的外部文档比例;
- 同时完成人眼渲染与模型文本扫描的比例;
- 具备完整来源血缘的 AI 生成文档比例;
- 金额等高影响字段经过确定性对账的比例;
- 未经具名审批就解除隔离的生成文档数量;
- 下游工作流拒绝未审核来源的次数;
- 从可疑文件枚举全部派生文件所需时间;
- 按渠道、来源、模型和动作统计的注入告警;
- 每层控制的误报率和审核时延。
检测与遏制应分别统计。Prompt 检测器可能漏报,最小权限仍能阻止外发。合并成一个通过率会掩盖真正生效的防线。
常见问题
这是传统意义上的 Word 病毒吗?
研究者报告的 PoC 不依赖可执行恶意代码。隐藏自然语言由 Copilot 解释,传播依赖 AI 生成新文件以及后续复用。
微软已经提供了哪些防护?
微软公开了强化系统 Prompt、Spotlighting、Prompt Shields、模型输入输出过滤、Defender 渠道扫描、信息流控制、最小权限、审计和人工审批等多层措施。同时,微软把确定性识别所有间接提示注入视为仍待解决的研究问题。
Defender for Office 365 能彻底阻止传播吗?
Defender 文档描述的是入站邮件投递前的 Prompt 注入检测,可以降低一条入口的风险。OneDrive、SharePoint、Teams、合作伙伴空间和其他来源仍需要上下文准入、生成后验证、来源追踪和权限控制。
企业现在最该先做什么?
先标记外部文档,只允许它们进入只读 AI 流程;同时扫描页面与提取文本,隔离所有 AI 生成派生文件,对高影响编辑和共享设置审批,并开始记录源文件到生成物的血缘。
参考资料
- Håkon Måløy:Context Collapse, Part 3 - AI Worming through Word
- Cohen 等:Morris II,自复制 Prompt 在 GenAI 应用中的实验
- Microsoft Security Response Center:How Microsoft defends against indirect prompt injection attacks
- Microsoft Learn:Defend against indirect prompt injection attacks
- Microsoft Learn:Prompt injection protection in Microsoft Defender for Office 365
- Microsoft Incident Response:Detecting and analyzing prompt abuse in AI tools