深夜Slack警报:AI监控工具如何捕获Axios供应链攻击
Elastic安全研究员通过自建AI监控工具,在npm生态中实时捕获了Axios供应链攻击。攻击者利用窃取的维护者账号发布恶意版本,植入后门依赖plain-crypto-js并通过postinstall钩子部署跨平台恶意软件。本文深度还原发现过程、技术细节与缓解建议。
🎯 Critical APT组织
Elastic安全研究员通过自建的AI驱动监控工具,在npm生态中捕获了一起由国家背景的威胁组织(疑似朝鲜)发起的Axios供应链攻击。攻击者通过窃取维护者账号,发布恶意版本并植入后门依赖,利用postinstall钩子部署跨平台恶意软件。
来源:Elastic Security Labs | 0 | 原文链接
🔍 关键发现
- 攻击者通过窃取Axios维护者的npm账号,篡改邮箱为ProtonMail后发布了两个恶意版本(1.14.1和0.30.4)。
- 恶意代码并未直接注入Axios,而是通过新增依赖包'plain-crypto-js',利用postinstall脚本执行跨平台恶意软件。
- 该攻击疑似与TeamPCP组织有关,该组织此前已通过污染Trivy CI/CD管道窃取了大量凭证,并进一步攻陷了LiteLLM等知名项目。
⚔️ 攻击链分析
1. 攻击者通过凭证泄露或社会工程学手段获取Axios维护者npm账号;2. 修改账号邮箱为攻击者控制的ProtonMail地址;3. 发布恶意版本,引入'plain-crypto-js'依赖,该依赖在安装时执行postinstall钩子;4. postinstall脚本部署跨平台恶意软件,进行凭证窃取、持久化等操作。
🚩 失陷指标 (IOC)
axios@0.30.4axios@1.14.1plain-crypto-js (恶意依赖包)ProtonMail邮箱 (攻击者控制邮箱)
🛡️ 缓解建议
- ✅ 对npm包发布实施多因素认证(MFA)和硬件安全密钥(如YubiKey)绑定。
- ✅ 监控npm/npmjs.org的Changelog和CouchDB _changes feed,对高流行度包的新版本进行自动差异分析。
- ✅ 在CI/CD管道中启用运行时安全检测,对postinstall等生命周期脚本进行沙箱执行或行为分析。
涉及漏洞:[]
⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。
🤖 常见问题解答(FAQ)
❓ 攻击者是如何获得Axios维护者账号的?
文中未明确,但结合TeamPCP此前通过Trivy泄露的凭证,推测是凭证填充或从已泄露的CI/CD管道中获取的npm令牌。
❓ AI监控工具如何判断恶意代码?
工具对新旧版本进行diff,生成Markdown报告后发送给LLM(Cursor Composer 2),提示模型查找混淆、base64、exec/eval、网络调用、隐写术、持久化机制等特征,输出判定结果。
❓ 为什么恶意代码不直接注入Axios,而是用额外依赖?
直接修改Axios源码会更容易被发现且破坏原有功能。通过新增一个看似正常的依赖包,并利用postinstall钩子执行恶意代码,可以降低检测概率并增加分析难度。