2026年3月30日,有人劫持了互联网上使用最广泛的JavaScript包之一。然后通过一次npm install,在数万台机器上安装了后门。
那个包是Axios。周下载量1亿次。过去10年里凡是用JavaScript做过东西的人,几乎一定用过这个HTTP库。攻击者没有修改Axios源代码的一行。而是劫持了管理员账号,将一个几小时前创建的假包添加到依赖项中后发布了更新。这个假包在被安装的瞬间检测OS,下载并运行定制的远程访问木马(RAT),然后自我删除。等你打开node_modules文件夹的时候,它已经消失了。
这是什么?
软件供应链攻击(Supply Chain Attack)。攻击的不是你直接使用的代码,而是你的代码所依赖的包。
有什么不同?
| 传统供应链攻击 | AI Agent时代的供应链攻击 | |
|---|---|---|
| 攻击准备时间 | 数月至数年(XZ Utils:2年建立信任) | 数小时至数天(Axios:39分钟完成) |
| 依赖决策主体 | 开发者直接审查 | AI Agent自动安装,审查时间≈0 |
| 检测方式 | CVE数据库比对(npm audit) | 需要行为分析(无CVE的新型恶意软件) |
要点整理:立即可用的防御方法
- 强制基于lockfile的安装
默认使用npm ci。只安装lockfile中指定的精确版本。 - 引入基于行为分析的安全工具
除npm audit外,引入Socket或Oligo等分析包实际行为的工具。 - 限制AI Agent权限
让自律编程Agent在添加依赖时需经过人工审批。 - 阻止postinstall脚本
设置npm config set ignore-scripts true可以阻止包安装时的自动执行脚本。




