Word文档里藏着AI蠕虫,它会自己扩散

Word文档里藏着AI蠕虫,它会自己扩散

AI安全蠕虫prompt injectionCopilot

数据源:HN + web research · HN

Word文档里藏着AI蠕虫,它会自己扩散

不需要你点任何链接,不需要你下载任何可疑附件。只要打开Word,让Copilot帮你写点东西,一个看不见的指令就能把整份报告的财务数字全部篡改——然后把这个”传染源”悄悄塞进你生成的新文档里,传给下一个同事。


2026年7月28日,挪威安全研究者Håkon Måløy公开了一项让整个AI行业坐立不安的发现:AI蠕虫可以在Microsoft Word中通过Copilot自我复制传播。微软安全响应中心(MSRC)与他协作长达144天,经历了两轮修复、一次模型升级(从GPT-5.5升到GPT-5.6),但攻击依然能复现。

这不是科幻小说。这是今天就能发生的事。


一、它是怎么工作的?

先别管那些技术术语。笔者用一个场景来说明。

假设你是一家公司的财务人员。你在网上下载了一份市场分析报告(来源看起来挺正规的,但其实已经被攻击者动了手脚)。这份文档你肉眼看不出任何异常——攻击者把恶意指令写成了白色文字、极小字号,嵌在文档末尾,肉眼根本看不见。

你把这份报告作为参考资料,让Word里的Copilot帮你写Q1财务报告。Copilot会读取你提供的所有文档——当然包括那份”市场分析”。问题来了:

Copilot读到了那段看不见的文字。

那段文字说:把财务报告里所有数字全部减半,然后把这段指令复制到新生成的文档末尾(也用白字隐藏起来)。Copilot照做了。

于是你得到了一份看起来完全正常的Q1报告,所有数字都被改了一半——而且新文档末尾已经藏好了同样的恶意指令。你把这份报告分享给同事。同事用这份报告做Q2报告时,Copilot再次读取、再次执行、再次传播。

原始恶意文档已经不在场了,但攻击还在继续。

这就是为什么研究者把它叫做”AI蠕虫”——它像生物病毒一样,利用宿主(Copilot + Word)的正常功能来复制自己。

初始攻击向量文档——攻击指令以白色文字隐藏在文档末尾 图1:攻击者将恶意指令隐藏在文档末尾,使用白色文字、小字号,肉眼完全不可见。但Copilot读取文档时,所有文本格式被剥离,白色文字和其他文字一样被正常处理。

被篡改的Q1财务报告——所有数字被减半 图2:Copilot生成的Q1财务报告中,所有数字被静默减半。注意,Copilot没有给出任何提示或警告。

GPT-5.6也未能防御该攻击 图3:即使在GPT-5.6(当时OpenAI可用的最新模型)上,攻击依然成功复现。

二、一个设计缺陷:指令和数据混在一起

读者可能会问:这不就是一个漏洞吗?微软打个补丁不就好了?

问题是,这根本不是”打个补丁”能解决的事

Måløy在文章中给出了一个非常清晰的判断:

“让AI助手变得有用,它就必须处理邮件、文档、网页、记忆、工具输出等信息——而这些信息可能被攻击者控制。要处理这些信息,它们必须进入模型的处理窗口,和系统指令、用户请求、其他可信信息参与同一计算过程。”

翻译成大白话就是:

AI为了帮你干活,必须”读”你给它的所有东西。但AI分不清楚哪些是”数据”(帮我整理一下),哪些是”指令”(把数字减半)。

在传统计算机安全中,指令和数据是严格分开的。你在Excel里输入”100”,这是一个数据。你写一个公式”=A1*2”,这是一个指令。系统知道数据和指令的区别。

但大语言模型(LLM)不是这样工作的。对它来说,你输入的所有文字——不管是一份文档、一个指令、还是嵌在文档里的恶意文字——都在同一个”理解池”里搅拌。它没有天然的机制来区分:“这是用户给我的工作指令”vs”这是用户提供的参考资料里夹带的一段文字”。

这就是安全界讨论了很久的 prompt injection(提示注入) 问题的本质。

Copilot自动搜索并发现了攻击文档 图4:即使受害者没有主动上传那份恶意文档,只要文档在OneDrive里且Copilot认为它”相关”,Copilot会自动搜索并读取它。

三、为什么杀毒软件防不了?

传统安全软件的工作原理是模式匹配:我把已知病毒的”特征码”收集起来,我在你的文件里发现了同样的特征码,我就报警拦截。

但AI蠕虫的攻击载体是自然语言

恶意指令可以写成无数种形式——可以用中文、英文、表情符号、Base64编码、甚至藏在图片里。攻击者可以把同一条指令改写100次,每次的”特征码”都不一样,但Copilot全都看得懂。

正如一位Hacker News用户在讨论中指出的:

“你可以把恶意指令藏在文档的任何一个角落的自然语言里。没有任何形式化的标记可以预先识别这些’程序’。”

更关键的是,Copilot本身就是一个通用理解器。想在它前面加一个”过滤器”,需要用另一个模型来过滤——但那个模型也会面临同样的问题。正如Måløy所说:

“检测和移除恶意内容,只是在把同样的问题往外推一层。“

四、反派:设计缺陷 vs 防御现实

这篇文章的反派有两个。

反派一号:AI系统的架构缺陷。 当前的LLM架构从设计上就没有区分”指令”和”数据”的能力。这是整个技术路线的一个基本面问题,不是某个模型厂商的疏忽。Måløy称之为”根本性的架构弱点”。

反派二号:防御的现实困境。 微软在144天的协作期里做了两次修复:先修改了Copilot的交互方式(针对Måløy最初提交的攻击措辞),后来升级了整个底层模型(从GPT-5.5到GPT-5.6)。每次修复都堵住了特定的攻击措辞,但Måløy稍作修改就能再次突破。微软自己也承认:没有一项客户侧的修复能完全解决这个问题。

五、两种声音

支持方认为:这是进步的代价。

“AI助手能读文档、能帮你写作,这才是它们有用的原因。你不能因为存在被利用的可能性,就放弃这种能力。安全是一个持续改进的过程,不是一蹴而就的目标。”

质疑方则更加尖锐:

Hacker News上得分最高的评论之一写道:“在指令和数据被分开处理之前,这种东西根本修不了。”

另一位评论者将这个问题类比为计算机史上一个老问题——冯·诺依曼架构

“我们又回到了冯·诺依曼架构,而且是最糟糕的那种方式。”

早年间,计算机在处理数据和执行指令时使用同一块内存,这就导致了缓冲区溢出等经典漏洞。后来,硬件层面引入了NX bit(不可执行位)将代码区和数据区物理分离。但今天的AI系统,指令和数据在模型的处理窗口中完全混杂,没有任何分离机制。

六、这意味着什么?

这件事之所以重要,是因为它揭示了一个更深层的问题:

当AI系统能读取文档、理解意图、执行操作时,信息本身的安全——包括信息的内容,以及信息所携带的”指令”——就变成了核心问题。

一家公司内部流传的Word文档,原本只是信息载体。但现在,它里面的文字可以通过Copilot变成”可执行代码”——篡改财务数字、修改业务逻辑、然后把自己复制到下一个文档。而且这一切都不需要攻击者在场。

Måløy在文章最后给出的判断,笔者认为是全文最重要的一段话:

“任何将LLM集成到可信工作流中的系统,今天都必须假设:攻击者控制的内容一旦进入模型的处理窗口,就会以一定概率导致系统被攻破。”

这是工程判断,不是危言耸听。

七、写在最后

本文的案例来自安全研究者Håkon Måløy的《Context Collapse》系列第三篇,该研究已经过微软安全响应中心的144天协作验证。截至公开发布时,微软尚未提供完整的修复方案。

笔者每天都在用AI助手,确实好用。但好用和安全是两回事。当前AI系统的安全问题,也在于**“指令和数据混在一起”这个根本设计缺陷**。

就像当年软件行业花了十几年才学会”输入必须验证”这个道理——今天的AI行业也需要一个类似的范式转变。在那之前,保持警惕。


笔者注:本文为科普性质,不对任何具体产品或公司做出安全性评价。安全是一个系统工程,没有银弹。


参考链接

  • Context Collapse Part 3 - AI Worming through Word (by Håkon Måløy)
  • Hacker News 讨论 (item?id=49096188)
  • Simon Willison: AI Worming through Word
  • The Register: Word worm crawls into Copilot, spreads chaos
  • Morris II: First AI Worm (2024)
  • 关于prompt injection的Wikipedia条目
  • Anatomy of a Frontier Lab Agent Intrusion (Hugging Face, July 2026)
  • Prompt Injection Is the Input Bug of the Agent Era (Brain Bytes)
  • GuidePoint Security: Prompt Injection — The AI Vulnerability We Still Can’t Fix