axios 供应链投毒事件深度解析:全球最流行 HTTP 库沦为 RAT 载体
引言
2026年3月底,JavaScript 生态系统遭遇了一次震惊业界的供应链攻击。全球每周下载量超过 1 亿次的流行 HTTP 客户端库 axios 成为攻击目标,其维护者账号被劫持,并发布了包含恶意代码的官方版本。此次事件再次凸显了开源软件供应链的脆弱性,以及即使是广泛使用的基础库也可能成为攻击者分发恶意软件的渠道。本文将深入剖析 axios 供应链投毒事件的技术细节、攻击机制、潜在危害以及开发者应采取的防御措施。
事件概述
axios 供应链投毒事件的核心是攻击者成功劫持了 axios 首席维护者的 npm 账号。利用这一权限,攻击者绕过了正常的 CI/CD 流程,直接向 npm (Node Package Manager) 发布了两个包含恶意代码的版本:axios@1.14.1 和 axios@0.30.4 [1]。由于 axios 的巨大影响力,这些恶意版本在短时间内被大量项目下载和安装,导致了广泛的感染。
攻击链条解析
攻击者在受污染的 axios@1.14.1 和 axios@0.30.4 版本的 package.json 中引入了一个名为 plain-crypto-js 的恶意依赖项。这个依赖项被精心伪装成合法的 crypto-js 库,但其真正的攻击载荷隐藏在 postinstall 脚本中 [1]:
- 恶意依赖注入: 攻击者在
package.json中添加了"plain-crypto-js": "^4.2.1"这一行。plain-crypto-js是一个伪造的包,其代码与真实的crypto-js@4.2.0几乎相同,但额外添加了一个scripts块,其中包含"postinstall": "node setup.js"[1]。 - 安装触发: 当用户执行
npm install axios并安装了受感染版本时,npm 会自动安装plain-crypto-js。随后,plain-crypto-js的postinstall脚本(即setup.js)会自动执行。 - 跨平台 RAT 植入:
setup.js脚本是经过混淆处理的,它会根据宿主机的操作系统(macOS、Windows、Linux)下载并执行对应的远程访问木马 (RAT)。这意味着无论受害者的开发环境是哪种操作系统,都可能被植入恶意软件 [1]。 - 痕迹清理: 恶意脚本在完成 RAT 植入后,会尝试修改
package.json文件,移除自身的postinstall钩子,并用一个不含恶意脚本的package.md文件替换原始的package.json,以掩盖攻击痕迹,增加发现难度 [1]。
图 1:axios 投毒事件中恶意依赖项触发 RAT 下载的完整流程 [4]
上图清晰展示了从 CI/CD 管道到最终 RAT 植入的攻击流程。值得注意的是,此次攻击中,攻击者成功绕过了 npm 的 OIDC 信任发布机制,直接通过被劫持的账号发布了恶意版本。这表明即使是现代化的安全发布流程也可能存在被绕过的风险 [1]。
关键启示与修复
此次 axios 供应链投毒事件揭示了多个关键的安全问题:
- 账号安全: 即使维护者启用了双重身份验证 (2FA),账号仍可能因恢复码泄露、长期有效的令牌被盗或钓鱼攻击等方式被攻破。加强开发者账号的安全防护至关重要 [1]。
- 自动更新风险: 攻击者利用了
latest标签的自动更新机制,导致大量未锁定版本的项目在短时间内自动感染。这强调了依赖锁定(Lockfile)的重要性。
修复建议:
- 强制降级: 开发者应立即检查其项目依赖,确保项目使用
axios@1.14.0或0.30.3之前的安全版本。如果已安装受感染版本,应立即降级并进行全面的安全检查。 - 依赖锁定: 严格使用
package-lock.json或yarn.lock等依赖锁定文件,并将其纳入版本控制。这可以确保每次安装都使用已验证的依赖版本,避免意外升级到未经验证的新版本。 - 安全审计: 定期使用
npm audit或其他软件成分分析 (SCA) 工具检查项目依赖,识别并修复已知的恶意版本和漏洞。同时,对 CI/CD 管道进行安全审计,确保发布流程的安全性。 - 凭证管理: 审查并限制 CI/CD 环境中的凭证权限,并定期轮换 API 令牌。对于 npm 账号,应启用并强制执行 MFA,并警惕任何可疑的登录或发布行为。
总结
axios 供应链投毒事件再次敲响了警钟,提醒我们软件供应链攻击的威胁无处不在。作为开发者和组织,我们必须采取更加积极主动的安全策略,从代码开发、依赖管理到发布部署的每一个环节,都应建立起“零信任”的安全防线,以应对日益复杂和隐蔽的网络威胁。
参考文献
[1] Datadog Security Labs. (2026, April 2). Compromised axios npm package delivers cross-platform RAT. https://securitylabs.datadoghq.com/articles/axios-npm-supply-chain-compromise/
[2] Picus Security. (n.d.). Axios npm Supply Chain Attack: Cross-Platform RAT Delivery via Compromised Maintainer Credentials. https://www.picussecurity.com/resource/blog/axios-npm-supply-chain-attack-cross-platform-rat-delivery-via-compromised-maintainer-credentials
[3] Elastic Security Labs. (n.d.). Inside the Axios supply chain compromise - one RAT to rule them all. https://www.elastic.co/security-labs/axios-one-rat-to-rule-them-all
[4] Elastic Security Labs. (n.d.). Inside the Axios supply chain compromise - one RAT to rule them all. (Image Source) https://www.elastic.co/security-labs/axios-one-rat-to-rule-them-all