软件供应链安全

供应链投毒:AI 帮你写代码,也帮你装恶意包,谁来把关?

先问一个问题,你最近一次用 AI 写代码,它给你装了哪些第三方包,你都看清楚了吗?

大概率没有。

现在用 Claude Code、Cursor 这类工具,通常是你说一句需求,AI 就写好代码、顺手把依赖包装上、跑通给你看,几秒钟的事,丝滑得很。

你要的是结果能跑,至于中间装了什么、那些包干不干净,你也想不到一个个核对。

这套新习惯让效率翻了几倍。但它也悄悄改掉了一件事,装包的决定权,从人手里,交到了 AI 手里。

而这件事的风险,前段时间刚被一个真实事件证明了。

沙虫:一条会自己繁殖的毒

5 月 25 日,国家网络与信息安全信息通报中心发了一条预警:全球最大的 JavaScript 软件包平台 npm,被一个叫“沙虫”(Shai-Hulud)的恶意程序投毒了。

攻击者攻陷了官方维护者账户,塞进去 600 多个带毒版本,涉及 300 多个独立程序包。

沙虫最麻烦的地方,是它会自我复制。

偷到一个开发者的发布权限后,它会自动往这个人维护的其他包里注入恶意代码,再发新版本。

下游谁装了,谁的凭证就被偷,GitHub Token、云密钥、SSH 私钥、数据库密码,一锅端,然后从这台机器继续往外爬。

它的扩散也确实没停在 npm 上面,echarts-for-react、@antv 系列、TanStack 的 42 个包都中招,还蔓延到了 Python 生态。

连法国一家主流大语言模型公司 Mistral AI,在 PyPI 上的官方 Python SDK 也被注入了恶意代码。

换句话说,前端、AI 开发者、开源维护者,全在射程内。

现在把这两件事放一起看:一条会自动繁殖、专偷凭证的毒,碰上了一个可以自由装包的 AI。

AI 把风险放大了?

过去装一个包,人多少会有个本能的迟疑:这维护者靠谱吗?最近更新正常吗?

这道迟疑虽然不严谨,但它是一道刹车。

AI 自动装包,把这道刹车拿掉了。

更深一层的问题是,AI 编程工具自己用的 Skills、插件、扩展,本身也是一种“包”,也能被投毒。

也就是说,风险不只在 AI 帮你装的业务依赖,还在 AI 工具自己装的东西。

这是一个传统供应链防护几乎完全没覆盖的新攻击面。

这个面有多大?给你一个数字感受一下:目前主流 AI Skills 平台上,恶意 Skills 的比例高达 30.28%。

而很多人用 AI 工具时,对装了哪些 Skills 是没有概念的,更不知道哪个 Skills 会有问题。

效率和风险,在这里是同一枚硬币的两面。

AI 把“获取能力”这件事变简单了,也把“引入风险”这件事变简单了。

你可能会说,我们公司有私有仓库、有定期扫描。

这两样确实是基本盘,但它们有两个跟不上 AI 时代的地方。

一是时机。

私有仓库只负责把包存下来,不保证干净,而 SCA 扫描是周期性的,两次扫描之间装上的恶意包,早就把数据传出去了。它们都站在”事后”。

二是范围。

它们大多只认传统的代码包,不认 AI Skills、插件这些新形态。AI 时代多出来的那一整层攻击面,它们看不见。

沙虫这种蠕虫又恰恰不挑对象,顺着依赖链爬,谁的门没关进谁家。

大公司还有流程和预算扛一扛,中小团队大多是裸奔,不是不知道有风险,是真腾不出人和钱。

说到底,今天不缺威胁情报。哪个包出问题,情报很快就有。

我们缺的是情报和拦截之间那道闸门,你知道某个包有毒,却没有任何东西能在它落地那一刻把它挡住。

把检查点,挪到“进门”那一刻

思路可以换一下,与其等包进来之后反复扫描、出事再追着删,不如在它进门的那一刻就拦一道。

这正是塞讯软件供应链防投毒智能网关在做的事。

它架在你和外部包之间,做制品仓库的代理。每个包进来先过一次情报核对:

1.命中已知恶意,立即拦截;

2.在白名单里,直接放行;

3.没见过的,云端实时查。

本地不到 5 毫秒,云端 2 秒以内,几乎不打断开发节奏。

关键是它盯的三个入口,正好踩在 AI 时代的痛点上:开发者本地工位、CI/CD 流水线,还有 AI 编程助手。

而且它真的管 AI,背后的威胁库有 45 万条以上记录,传统包和 AI Skills 都覆盖,目前监控着四大主流 AI Skills 平台 71 万个 AI Skills。

从威胁出现到规则推送到你的网关,平均 6 小时。Docker 一键部署,半小时上线,不改变开发者任何习惯。

AI 写代码、AI 装包,这个趋势不会回头,也没必要回头——它确实让事情快了太多。

但要想清楚一件事:AI 能替你写、替你装,唯独替不了你去担责。包装错了、毒进来了、凭证丢了,账还是记在你和你公司头上。

它省掉的那道人工把关,得有别的东西补回来。在 AI 把开发提速的同时,给这条提速的链路装一道闸门,不是可选项了。

下次 AI 又顺手给你装了个包,你希望它是直接进来,还是先被门口拦一下?

你们用 AI 写代码,装包这一步现在是怎么管的?还是 AI 推荐什么就装什么?评论区聊聊,也欢迎转给正在头疼这件事的同事。

参考文章:国家网络与信息安全信息通报中心通报:主流 JavaScript 软件包管理平台 npm 遭供应链投毒攻击,公安部网安局,2025 年 5 月 25 日