<!-- title: 一行npm install如何让全球开发者中招：Axios供应链攻击全拆解 -->
<!-- domain: programming -->
<!-- video: https://www.youtube.com/watch?v=eGSsoSEppNU -->

# 一行`npm install`如何让全球开发者中招：Axios供应链攻击全拆解

## 导语

你每天都在执行的`npm install`，可能正在往你的电脑里安装一个远程控制木马。这不是假设——2026年3月31日，JavaScript生态中最流行的HTTP客户端库Axios遭遇了一次精密的供应链攻击。攻击者通过社会工程学窃取了核心维护者的npm凭证，在短短几个小时内，两个被投毒的版本被推送到npm官方仓库，携带跨平台RAT（远程访问木马）。Axios每周下载量超过1亿次，这意味着任何使用`^1.14.0`或`^0.30.0`版本范围的项目，在执行`npm install`的那一刻就可能被感染。NetworkChuck——YouTube上最具影响力的网络安全教育频道之一——在事发当天就发布了深度分析视频"the WORST hack of 2026"，用他标志性的极客激情为我们拆解了这次攻击的全貌。这篇文章将基于视频内容，结合Google Mandiant、Microsoft Security、Snyk等多方安全报告，给你一份完整的攻击复盘和防御指南。

## 视频背景卡片

| 项目 | 内容 |
|------|------|
| 视频标题 | the WORST hack of 2026 |
| 频道 | NetworkChuck |
| 发布日期 | 2026年3月31日 |
| 核心主题 | Axios npm供应链攻击深度拆解 |
| 攻击日期 | 2026年3月31日 |
| 影响范围 | 100M+周下载量，全球JavaScript项目 |
| 威胁行为者 | 朝鲜关联APT组织 |

## 核心内容拆解

### 1. 攻击时间线：从凭证窃取到全球感染

NetworkChuck在视频开头就强调了一个令人不寒而栗的事实——**整个攻击链条的核心起点，仅仅是窃取了一个维护者的npm登录凭证**。

完整时间线如下：

- **攻击前数周**：攻击者通过社会工程学手段（可能是钓鱼邮件或伪装成npm官方的安全通知）获取了Axios核心维护者的npm账户凭证。
- **3月31日（攻击日）**：攻击者使用窃取的凭证，向npm仓库推送了两个恶意版本——`axios@1.14.1`和`axios@0.30.4`。这两个版本都被注入了一个隐藏依赖（phantom dependency）。
- **3月31日（数小时内）**：社区安全监测系统触发警报，npm安全团队介入。恶意版本被从仓库中移除。
- **4月1日**：Microsoft Security发布正式缓解指南。Google Threat Intelligence Group（Mandiant）将攻击归因于朝鲜关联的威胁行为者。
- **4月2日**：Axios首席维护者公开发文，详细描述了自己如何被社会工程学攻击。

**我的延伸分析**：这次攻击的"时间窗口"极为短暂——恶意包在npm上存活的时间可能只有几个小时。但正是这几个小时，足以让全球成千上万的CI/CD流水线在自动构建过程中拉取到被污染的版本。dev.to上的一篇分析文章标题极为精准——"A 2-Second Breach Window That Compromised the JavaScript Ecosystem"。你的`npm install`从执行到完成可能只需要1-2秒，而在这1-2秒内，木马已经悄悄潜入你的`node_modules`。

### 2. 技术拆解：隐藏依赖攻击的精密机制

NetworkChuck在视频中花了不少篇幅拆解攻击的技术实现细节。这不是一个简单的"替换源码"式攻击，而是一次精心设计的**隐藏依赖注入**。

**攻击技术架构：**

恶意版本的Axios本身代码几乎没有变化——这正是高明之处。攻击者没有直接在Axios源码中植入恶意逻辑（这样很容易被代码审查发现），而是在`package.json`中悄悄添加了一个看似无害的依赖包。这个依赖包在安装时会执行一段混淆过的JavaScript代码，其功能是：

1. **环境探测**：检测当前操作系统类型（Windows/macOS/Linux）
2. **载荷下载**：根据操作系统从远程C2服务器下载对应的原生二进制载荷
3. **持久化驻留**：将RAT安装到系统中，建立与攻击者控制服务器的持久连接
4. **信息窃取**：收集系统信息、浏览器凭证、加密货币钱包等敏感数据

**这个RAT的代号被安全研究人员命名为"WAVESHAPER"**——一个跨平台的远程访问木马，能够同时在Windows、macOS和Linux上运行。

**我的延伸分析**：这种"隐藏依赖"攻击模式之所以危险，是因为它绕过了大多数安全检查机制：
- 代码审查（Code Review）只会关注Axios本身的变更，不会逐个检查所有依赖的依赖
- `package-lock.json`的自动更新机制让恶意包的引入变得"悄无声息"
- 大多数开发者的`.gitignore`中排除了`node_modules`，使得恶意代码不会被提交到仓库，从而不会触发仓库级别的安全扫描

### 3. 朝鲜APT的影子：国家背景的网络犯罪

视频中另一个令人震惊的点是——**这次攻击被Google Mandiant团队归因于一个与朝鲜有关的APT组织**。

Google Threat Intelligence Group在4月1日发布的报告中指出，攻击的技术特征、C2基础设施和恶意软件编写风格，与已知的朝鲜关联网络犯罪活动高度一致。朝鲜的网络攻击团队通常有两个主要目标：

- **情报收集**：窃取技术知识产权和战略情报
- **资金获取**：通过加密货币 theft 为制裁下的朝鲜政权提供资金

**我的延伸分析**：选择Axios作为攻击目标极具策略性。为什么不是某个小众但高价值的包？因为Axios的攻击面最大——它几乎是每个JavaScript项目的"标配"。每周1亿次下载意味着全球数百万个项目在使用它，其中必然包括大量企业级应用、金融系统、政府网站。攻击者不需要知道谁在使用Axios——他们只需要"广撒网"，木马会自动找到高价值目标。

这与2024年的XZ Utils后门事件形成了有趣的对比。XZ攻击是高度定向的——攻击者花了数年时间建立信任，目标是特定的Linux发行版的SSH服务。而Axios攻击则是"地毯式轰炸"——不挑目标，追求最大范围的感染。

### 4. 社会工程学：攻击链中最脆弱的环节

NetworkChuck在视频中特别强调了攻击的起始点——**对维护者的社会工程学攻击**。

Axios的首席维护者在事后详细描述了自己是如何被骗的。虽然具体细节没有完全公开（以防复制），但已知的信息显示：

- 攻击者可能伪装成了npm/GitHub的安全团队
- 通过精心伪造的邮件或消息引导维护者"验证"或"更新"其npm凭证
- 一旦维护者在钓鱼页面输入凭证，攻击者立即获得了对Axios npm包的发布权限

**我的延伸分析**：这暴露了开源生态系统一个根本性的结构性弱点——**关键基础设施的维护者往往是志愿者或兼职贡献者，他们缺乏企业级的安全培训和防护**。Axios被全球数百万项目依赖，但其核心维护团队可能只有几个人。攻击者只需要攻破其中一个，就能影响到整个JavaScript生态。

这不是个例。近年来多起重大供应链攻击都遵循相同模式：
- **2021年ua-parser-js**：维护者GitHub账户被入侵
- **2022年node-ipc**：维护者在抗议俄乌战争时故意破坏自己的包
- **2024年XZ Utils**：攻击者通过长期社会工程学获取了项目维护权

### 5. npm生态的系统性脆弱：你信任的"信任链"

NetworkChuck在视频中提出了一个更深层的问题：**npm的信任模型本身是否存在根本性缺陷？**

当你在`package.json`中写`"axios": "^1.14.0"`时，你信任的是：
1. npm registry是安全的（✓ 基本可以信任）
2. axios的维护者是可信的（✗ 可能被攻击）
3. axios的所有依赖是安全的（✗ 可能被注入恶意依赖）
4. axios的依赖的依赖是安全的（✗ 供应链的供应链，层层嵌套）

这形成了一条**信任链**，而这条链的强度取决于最薄弱的环节。

**我的延伸分析**：npm生态中存在几个系统性问题，使得供应链攻击特别有效：

1. **语义化版本的自动更新机制**：`^`和`~`前缀允许自动安装补丁版本更新。这意味着新发布的版本会自动被拉取，开发者可能完全不知道自己安装了一个新版本。

2. **`package-lock.json`的双刃剑**：虽然lock文件可以锁定版本，但很多项目在CI/CD中会执行`npm ci`（会尊重lock文件）或`npm install`（可能会更新）。一旦lock文件过期或被删除，恶意版本就会趁虚而入。

3. **install脚本的自动执行**：npm允许包在安装时自动执行脚本（`preinstall`、`postinstall`）。这是WAVESHAPER RAT得以执行的核心机制。虽然可以用`--ignore-scripts`禁用，但极少数开发者会这么做。

4. **传递依赖的不可见性**：一个中等复杂度的JavaScript项目可能有数百甚至上千个传递依赖。没有人能逐一审查。

### 6. 防御指南：如何保护你的项目

NetworkChuck不仅在视频中分析了攻击，还专门创建了一个[GitHub仓库](https://github.com/theNetworkChuck/axios-attack-guide)，提供了检测脚本、IOC（入侵指标）列表和防御指南。

核心防御措施包括：

**即时检查：**
- 检查你的`package-lock.json`中是否存在`axios@1.14.1`或`axios@0.30.4`
- 搜索你的构建日志，确认是否有CI流水线拉取过这些版本
- 如果有，立即隔离相关构建环境，进行安全审计

**长期防护：**
- **锁定精确版本**：使用`"axios": "1.14.0"`（不带`^`）而不是`"axios": "^1.14.0"`
- **使用`npm ci`替代`npm install`**：`npm ci`严格按照`package-lock.json`安装，不会自动更新
- **启用`--ignore-scripts`**：在npm配置中设置`ignore-scripts=true`，阻止安装时自动执行脚本
- **使用锁文件完整性校验**：将`package-lock.json`提交到版本控制，并设置CI检查其一致性
- **部署npm安全审计工具**：使用Snyk、Socket.dev等工具实时监控依赖安全

**我的延伸分析**：在这次攻击之后，我认为以下措施也应该成为团队的标准实践：

1. **维护者多因素认证（MFA）**：如果你是开源项目的维护者，请务必启用npm的MFA。这次攻击如果维护者启用了MFA，攻击者即使拿到了密码也无法发布恶意版本。

2. **发布审批流程**：对于高影响力的npm包，应该实施多人审批的发布流程。npm组织功能支持这一点。

3. **依赖许可白名单**：使用工具限制项目可以引入的新依赖，对新增依赖进行人工审查。

### 7. 行业反思：开源安全需要系统性解决方案

这次攻击引发了一个更广泛的行业讨论——**我们是否过度依赖了一个本质上不安全的开源供应链？**

Microsoft在攻击发生后的第二天就发布了缓解指南，Google Mandiant迅速完成了归因分析，npm安全团队快速下架了恶意包。这些响应速度值得肯定。但问题是——**这些都是"事后响应"，而我们需要的是"事前预防"。**

一些正在发展的解决方案：
- **Sigstore/npm provenance**：npm已经开始支持包的来源证明（provenance），允许维护者通过可信的CI/CD流水线签名发布包，证明包确实来自官方源码
- **OpenSSF Scorecard**：Open Source Security Foundation开发的评分系统，评估开源项目的安全实践
- **依赖沙箱**：像Deno这样的新运行时正在探索更严格的依赖权限模型

## 知识结构图

```mermaid
graph TB
    A[Axios npm供应链攻击 2026.3.31] --> B[攻击向量]
    A --> C[技术机制]
    A --> D[影响范围]
    A --> E[防御措施]

    B --> B1[社会工程学攻击维护者]
    B --> B2[窃取npm凭证]
    B --> B3[朝鲜APT组织]

    C --> C1[隐藏依赖注入]
    C --> C2[WAVESHAPER跨平台RAT]
    C --> C3[环境探测+载荷下载]
    C --> C4[持久化驻留]

    D --> D1[100M+周下载量]
    D --> D2[全球JS项目受影响]
    D --> D3[CI/CD流水线污染]

    E --> E1[锁定精确版本]
    E --> E2[npm ci替代install]
    E --> E3[启用ignore-scripts]
    E --> E4[维护者启用MFA]
    E --> E5[部署安全审计工具]

    style A fill:#ff6b6b,color:#fff
    style B fill:#ffd93d
    style C fill:#6bcb77
    style D fill:#4d96ff,color:#fff
    style E fill:#9b59b6,color:#fff
```

## 实战启示

这次Axios供应链攻击对每一位开发者和团队都有直接的行动指导意义：

**如果你是开发者**：今天就去检查你的`package-lock.json`。看看你项目中的Axios版本是否在受影响范围内。然后，把`--ignore-scripts`加到你的`.npmrc`配置中。这一个小动作就能阻断绝大多数npm安装时恶意脚本的执行。同时，养成使用`npm ci`的习惯——在CI/CD中永远不要用`npm install`。

**如果你是技术负责人**：推动团队建立依赖管理策略。不是所有的npm包都值得信任。引入Snyk或Socket.dev这样的工具，对你的依赖树进行持续安全监控。对于关键项目，考虑使用npm的provenance功能，验证你安装的包确实来自它声称的源码。

**如果你是开源维护者**：立即在你的npm账户上启用MFA（多因素认证）。设置一个强密码，使用硬件安全密钥（如YubiKey）作为第二因子。考虑使用npm的发布审批流程，确保单人无法独立发布新版本。

**更深层的认知升级**：这次攻击揭示了一个残酷的真相——在现代软件供应链中，你的安全防线不仅仅取决于你写的代码，还取决于你引入的每一个依赖、这些依赖的维护者、以及这些维护者的安全意识。**你的攻击面不是你的代码量，而是你的整个依赖树。**

## 延伸学习路径

1. **[Microsoft Security Blog - Mitigating the Axios npm supply chain compromise](https://www.microsoft.com/en-us/security/blog/2026/04/01/mitigating-the-axios-npm-supply-chain-compromise/)** — 微软官方的缓解指南，包含详细的检测和修复步骤
2. **[Google Cloud Blog - North Korea-Nexus Threat Actor Compromises Axios](https://cloud.google.com/blog/topics/threat-intelligence/north-korea-threat-actor-targets-axios-npm-package)** — Mandiant的归因分析报告，了解APT攻击的手法特征
3. **[Snyk Blog - Axios npm Package Compromised](https://snyk.io/blog/axios-npm-package-compromised-supply-chain-attack-delivers-cross-platform/)** — Snyk的安全研究团队对攻击载荷的技术分析
4. **[NetworkChuck's GitHub - axios-attack-guide](https://github.com/theNetworkChuck/axios-attack-guide)** — 检测脚本和IOC列表，可以直接用于排查你的项目
5. **[dev.to - A 2-Second Breach Window](https://dev.to/yugjadvani/the-axios-npm-supply-chain-attack-march-2026-a-2-second-breach-window-that-compromised-the-9no)** — 生动还原攻击发生瞬间的技术分析文章

## 一句话总结

Axios供应链攻击用最残酷的方式证明了一件事——在现代软件开发中，你的安全边界不是你的代码，而是你的`npm install`。

## 参考来源

1. [the WORST hack of 2026](https://www.youtube.com/watch?v=eGSsoSEppNU) — NetworkChuck的原始分析视频
2. [Mitigating the Axios npm supply chain compromise](https://www.microsoft.com/en-us/security/blog/2026/04/01/mitigating-the-axios-npm-supply-chain-compromise/) — Microsoft Security Blog
3. [North Korea-Nexus Threat Actor Compromises Axios NPM Package](https://cloud.google.com/blog/topics/threat-intelligence/north-korea-threat-actor-targets-axios-npm-package) — Google Threat Intelligence Group
4. [Axios npm Package Compromised: Supply Chain Attack](https://snyk.io/blog/axios-npm-package-compromised-supply-chain-attack-delivers-cross-platform/) — Snyk安全研究
5. [The Axios npm Supply Chain Attack: A 2-Second Breach Window](https://dev.to/yugjadvani/the-axios-npm-supply-chain-attack-march-2026-a-2-second-breach-window-that-compromised-the-9no) — dev.to深度技术分析

---
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护，聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。
> 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
