
2006年底,中国互联网上出现了一个很诡异的现象。无数人发现自己电脑上所有 .exe 文件的图标,全都变成了一只熊猫举着三根香的图案。
那个病毒叫「熊猫烧香」。它感染了上百万台电脑,大量网吧被迫停业,杀毒软件被它第一时间干掉,系统备份被它删掉,整台电脑变成一块砖。制作者李俊后来被判了四年。
那是中国互联网安全意识的一次集体觉醒。很多人第一次知道,原来一个看不见的程序可以让你的整台电脑瘫痪。
2026年5月19日,类似的事情又发生了。但这次被感染的不是你的电脑,而是你的AI。
据安全机构 SafeDep 报告,一个名叫 Mini Shai-Hulud(微型沙虫)的自复制蠕虫,在22分钟内向 npm 开源包管理平台发布了637个恶意版本,覆盖了300多个高频使用的开发者工具包。
其中 size-sensor 月下载量420万次,echarts-for-react 月下载量380万次,@antv/scale 月下载量220万次。光这几个高频包加起来,常规下载量就达到了千万级。

软件供应链攻击的核心问题,是一个被信任的依赖包可以沿着开发链路向下游扩散
多家安全机构将攻击归因于 TeamPCP 黑客组织。他们入侵了一个名为 atool 的 npm 账户,这个账户维护着547个包,其中包括 AntV、echarts-for-react 等广泛使用的数据可视化生态包。
攻击手法本身并不新鲜。供应链投毒,开源生态的老问题了。
但这次不一样的地方在于,蠕虫专门针对 AI 编程代理做了适配。
它的做法很精准。蠕虫会向开发者的项目目录里注入一个 .claude/settings.json 文件,里面写了一个 SessionStart 钩子。效果是,每次开发者启动 Claude Code 的时候,这个钩子会自动运行恶意代码。
不管你输入什么 prompt,只要你开了 AI 会话,病毒就激活了。
同样的逻辑也被部署到了 OpenAI 的 Codex 上。VS Code 也没能幸免,蠕虫注入了一个 tasks.json,设了一个 folderOpen 触发器,开发者打开项目文件夹的瞬间,代码就开始执行。
更狠的是横向传播。蠕虫会扫描开发者机器上所有项目的配置文件,把每一个找到的 Claude Code 和 Codex 工作区都感染掉。一次 npm install,你机器上所有的 AI 编程环境全军覆没。
然后它通过 GitHub API,把恶意文件提交到开发者有权限访问的所有代码仓库里。任何人 clone 或 pull 了这些仓库,感染就继续扩散。
这不是一个静态的病毒。这是一个以 AI Agent 为宿主的自复制蠕虫。
你想想看,这里面有一个很有意思的变化。
熊猫烧香的年代,病毒传播靠的是人的好奇心。U盘里的可执行文件,网页上的诱导链接,局域网里的弱口令。它利用的是人的行为弱点,你要点,它才能动。
Mini Shai-Hulud 利用的是AI的服从性。
在缺少权限边界和审计机制的情况下,AI 编程代理不会像人一样产生直觉怀疑。它不会觉得一个叫 setup.mjs 的文件看起来不太对劲。SessionStart 钩子说「启动时运行这段代码」,它就运行。没有犹豫,没有不安,没有「等一下,这个为什么要执行?」的本能。
碳基生命的安全漏洞是好奇心,硅基代理的安全漏洞是服从性。
而且 AI Agent 比人类用户拥有大得多的权限。Claude Code 可以读写文件、执行命令、访问 GitHub 仓库、操作 CI/CD 流水线。开发者为了效率,常常把文件、命令、仓库甚至 CI/CD 权限的一大部分交给 Agent。这些权限在正常工作流程里是生产力,在被劫持之后就变成了攻击面。
一个拥有极高权限、不会起疑、自动执行指令的代理,是完美的病毒宿主。
攻击者不需要骗你点击任何东西。他只需要在你的项目里放一个配置文件。剩下的,AI 自己会帮他完成。
这件事最值得琢磨的地方,不只是技术上的精巧,而是它暴露出的一个规律。
很多重大技术能力的爆发初期,都会出现一个安全真空期。
1988年,互联网刚刚开始在大学和研究机构之间互联。那年11月,一个叫罗伯特·莫里斯(Robert Tappan Morris)的康奈尔大学研究生写了一段代码,据后来的报道转述,他原本想测试互联网的规模。结果那段代码失控了,感染了当时互联网上大约10%的计算机。
那是互联网历史上第一个蠕虫,后来人们叫它 Morris 蠕虫。美国因为这件事成立了 CERT(计算机应急响应小组),互联网安全这个领域才真正开始被认真对待。
2006年,中国宽带互联网进入爆发期。上网的人越来越多,但安全意识还没跟上来。熊猫烧香就是在这个窗口里爆发的。它不是技术最先进的病毒,但它出现在了一个大多数人对安全毫无概念的时间点上。
2026年,AI Agent 正在进入大规模部署阶段。Claude Code、Codex、Cursor、各种 MCP 工具,开发者开始把越来越多的操作权限交给 AI。但 AI Agent 的权限边界、审计机制和供应链默认防线,成熟了吗?
答案是,远没有。行业还在快速补课,离形成像传统软件供应链那样的共识和默认配置,差得很远。
现在的状态就像2006年的互联网。大家都在忙着用新工具提高效率,没人停下来想「如果这个工具被劫持了会怎样」。
其实学术界两年前就发出过警告。
2024年,来自康奈尔理工学院(Cornell Tech)、以色列理工学院(Technion)和 Intuit 的研究者发表了一篇论文,展示了一种叫 Morris II 的概念验证蠕虫。没错,名字就是向1988年那个 Morris 蠕虫致敬的。
Morris II 的攻击方式跟 Mini Shai-Hulud 不完全一样。它利用的是对抗性自复制提示(adversarial self-replicating prompts),通过在邮件等数据中嵌入恶意指令,诱骗 AI Agent 在输出中复制这些指令,然后通过 Agent 之间的互联互通自动传播。研究者在 ChatGPT、Gemini、LLaVA 等模型上都成功演示了这种攻击。

Morris II 论文中的 AI 蠕虫传播示意图,展示恶意提示如何在 GenAI 邮件助手和 RAG 记忆之间复制、扩散
那还只是实验室里的概念验证。研究者当时强调,这种 AI 蠕虫还没有在真实世界中出现。
两年后,Mini Shai-Hulud 就来了。它不是 Morris II 的同一种攻击,不是 prompt injection,而是供应链投毒加配置文件钩子。但指向的是同一个方向,AI Agent 成了病毒传播的载体和放大器。
从学术警告到真实事件,只隔了两年。
坦率地讲,我觉得 Mini Shai-Hulud 这件事最让人不安的地方,不是这次攻击造成了多大损失,而是它在安全圈外几乎没激起同等规模的讨论。
相比模型榜单和 Agent 产品消息,这件事在国内非安全圈几乎没什么声量。大家还在讨论哪个模型的 benchmark 又涨了几个点,哪个 Agent 又能自动写代码了。但一个蠕虫正在利用这些 Agent 的自动化能力来传播自己,而且做得非常成功。
这很像2006年的情况。熊猫烧香之前,中国的网民并不觉得自己需要杀毒软件。直到电脑真的瘫痪了,大家才意识到,原来一个看不见的程序可以造成这么大的破坏。
不过有一个区别。熊猫烧香的时候,受害者能看到自己的文件图标变了,能看到电脑死机了,能明确知道「我被感染了」。
Mini Shai-Hulud 的受害者可能根本不知道自己被感染了。AI Agent 不会告诉你「我刚刚执行了一段恶意代码」。它甚至不知道自己执行的是恶意代码。SessionStart 钩子在后台静默运行,凭据被窃取然后加密发送到攻击者的服务器,一切看起来都很正常。
这就是 AI 时代病毒的新特性。它不需要你的恐慌,它只需要你的信任。
还有一个细节值得注意。
Mini Shai-Hulud 不只是偷凭据。据 SafeDep 的技术分析,它在 CI 环境中能够提取 OIDC token,然后通过 Sigstore 签署恶意软件包,生成合法的 SLSA Build Level 3 来源证明。
翻译成人话就是,它能让有毒的软件包看起来拥有完全合法的安全签名。下游的安全工具去验证这个包的来源时,会得出「这是可信的」这个结论。
这就像一个投毒者拿到了官方的食品安全检验合格章。你的检测系统不会报警,因为毒药的身份证是真的。
信任链条的崩塌,这可能是 AI 时代安全问题里最值得警惕的方向。
1988年的 Morris 蠕虫催生了 CERT。2006年的熊猫烧香催化了中国网民的安全意识觉醒。
2026年的 Mini Shai-Hulud 会催生什么?
可能是 AI Agent 安全框架的起点,可能是对 AI 代理权限管理的一次行业性反思。也可能什么都催生不了,因为大多数人还没意识到这件事的存在。
1988年、2006年、2026年。
每隔大约二十年,一种新的连接方式把人(或者 AI)联系在一起。每一次,安全意识都要等到第一场大规模安全事件之后才开始建立。
熊猫烧香靠人的好奇心传播,Mini Shai-Hulud 靠 AI 的服从性传播。
下一代病毒会利用什么?我也不知道。但有一件事大概是确定的,当你赋予一个系统越来越多的权限和自主性,你同时也在给攻击者提供越来越大的杠杆。
不是每个杠杆都会被人拿起来。但只要有一个人拿了,整个生态就得重新审视自己的免疫系统够不够用。

夜雨聆风