文章总结: Axios是一个广受欢迎的JavaScriptHTTP客户端库。近期,其两个版本[email protected]和[email protected]被发现植入了恶意软件。攻击者通过劫持维护者账户,在发布的版本中注入了一个名为plain-crypto-js的恶意依赖包。该依赖包会在安装后执行脚本,部署跨平台远程访问木马(RAT),对macOS、Windows和Linux系统造成威胁。建议开发者立即检查项目是否使用了这些受影响的版本,并采取相应的排查和阻断措施。 综合评分: 90 文章分类: 恶意软件,漏洞预警,应用安全,网络安全,数据泄露
还在使用AI编程?前端常用库Axios被投毒,速查有没有受到影响
网络安全透视镜
2026年3月31日 13:17 澳大利亚
背景:什么是 axios?
Axios 是 JavaScript 生态系统中最受欢迎的 HTTP 客户端库。它几乎被用于所有发出 HTTP 请求的Node.js和浏览器应用——从 React 前端到 CI/CD 工具,再到服务器端 API。每周下载量超过3亿,哪怕只是一个小型发行的妥协,也带来了巨大的传播范围。开发者运行例程,或者没有理由怀疑软件包部署恶意软件。npm installnpm update
对于当下流行的AI Coding来说,实际影响或许非常大。
影响版本
[email protected]@0.30.4
2026年3月31日,StepSecurity识别出两个广泛使用的HTTP客户端库的恶意版本发布给npm:和。这两个版本均使用一位主 Axios 维护者的被攻破的 npm 凭证发布,绕过了项目正常的 GitHub Actions CI/CD 流水线。攻击者将维护者的邮箱改为匿名的ProtonMail邮箱,并通过npm CLI手动发布了有毒包裹。[email protected]@0.30.4
恶意版本注入一个新的依赖,该依赖永远不会在 axios 源代码中导入。它的唯一目的是执行一个脚本,作为跨平台远程访问木马(RAT)投放器,目标是macOS、Windows和Linux。投放器与实时指挥控制服务器连接,并投放平台特定的第二级有效载荷。执行后,恶意软件会自我删除,并用干净版本替换自己的恶意软件以规避取证检测。[email protected]
这两个恶意版本的 axios 内部都没有包含任何恶意代码。相反,两者都注入了一个假依赖——纯加密[email protected],这个包从未在Axios源码中导入,其唯一目的是运行一个安装后脚本,部署跨平台远程访问木马(RAT)。投放器会联系一个实时的指挥控制服务器,分别为macOS、Windows和Linux提供第二阶段负载,然后自我清除并用干净的诱饵替换自己的package.json,留下开发者事后检查node_modules文件夹时没有发现任何异常。
如果你安装的是[email protected]或[email protected],可以假设你的系统已经被攻破。
我们对恶意软件包进行了全面的静态和运行时分析,包括对混淆掉入器的完全解码。
袭击时间线
攻击是在大约18小时内预先策划的,恶意依赖在 Axios 发布前就已在 npm 上播种,以避免安全扫描器发出的“全新包”警报:
2026-03-30 – 05:57 UTC
[email protected]发布者 — 一个干净的诱饵,包含合法源的完整副本,没有安装后挂钩。其唯一目的是建立 NPM 发布历史,这样软件包在后续检查时不会显示为零历史账户。[email protected]
2026-03-30 – 23:59 UTC
[email protected]发布者 — 添加了恶意负载。引入了钩子和混淆掉管。[email protected]: “node setup.js”
2026-03-31 – 00:21 UTC
[email protected]由 Compromised 账户发布(邮箱:)——作为运行时依赖注入,目标用户是现代 1.x 用户。[email protected]@4.2.1
2026-03-31 – 01:00 UTC
[email protected]该版本由同一被攻破账户发布——同样注入到遗留的0.x分支,39分钟后发布,以最大化两条发布线的覆盖。
如何排查
# 检查项目中是否有恶意版本npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"grep -A1 '"axios"' package-lock.json | grep -E "1\.14\.1|0\.30\.4"
#检查 node_modules 中的 plain-crypto-jsls node_modules/plain-crypto-js 2>/dev/null && echo "可能受影响"
阻断恶意连接
iptables -A OUTPUT -d 142.11.206.73 -j DROPecho "0.0.0.0 sfrclak.com" >> /etc/hosts
或者让AI帮你排查也行
攻击机制
第一步——维护者账户劫持
攻击者攻破了 npm 账户,而 npm 账户是 axios 项目的主要维护者。该账户注册的邮箱被更改为——一个由攻击者控制的ProtonMail邮箱。利用这种访问权限,攻击者同时在1.x和0.x版本分支发布恶意构建,最大化暴露的项目数量。[email protected]
这两者都记录在npm注册库中,由发布者发布,使其一眼无法与合法发布区分。[email protected]@0.30.4jasonsaayman
关键的取证信号可见于npm注册表元数据中。每个合法的 axios 1.x 版本都通过 GitHub Actions 发布,配合 npm 的 OIDC Trusted Publisher 机制,这意味着发布与经过验证的 GitHub Actions 工作流程加密绑定。 完全打破了这种模式——通过被盗的NPM访问令牌手动发布,没有OIDC绑定,也没有:[email protected]
// [email protected] — LEGITIMATE"_npmUser": { "name": "GitHub Actions", "email": "[email protected]", "trustedPublisher": { "id": "github", "oidcConfigId": "oidc:9061ef30-3132-49f4-b28c-9338d192a1a9" }}// [email protected] — MALICIOUS"_npmUser": { "name": "jasonsaayman", "email": "[email protected]" // no trustedPublisher, no gitHead, no corresponding GitHub commit or tag}
Axios GitHub仓库中没有对应的提交或标签。该版本仅存在于 NPM 上。合法发布使用的OIDC令牌是短暂的,且针对特定工作流程而定——无法被盗。攻击者必须获得了该账户的长期经典NPM访问令牌。1.14.1
第二步——恶意依赖的分级
在发布后门 Axios 发布之前,攻击者预先在 npm 上预设了一个恶意包:,该包来自一个独立的一次性账号发布(, )。请注意,ProtonMail在两个账户中共享使用——这是该行为者一贯的运营模式。[email protected]@proton.me
这个套餐是故意设计得看起来很正规的:
伪装为crypto-js——描述相同(“加密标准JavaScript库”),作者署名相同(Evan Vosberg),以及指向github.com/brix/crypto-js
包含安装后钩子:— 自动执行,无需用户操作,适用于所有”postinstall”: “node setup.js”npm install
预先准备了自身的证据销毁——包括一个名为 的文件,一个干净的存根(版本,无号),准备在攻击运行后覆盖真实的清单package.mdpackage.json4.2.0postinstall
第三步——将依赖注入公理中
攻击者发布并添加了运行时依赖——一个从未出现在任何合法 Axios 版本中的包。差异是外科手术的:其他依赖都和之前的纯净版本完全一样。[email protected]@0.30.4plain-crypto-js: “^4.2.1”
干净版本与被攻破版本之间的依赖比较:
[email protected] — follow-redirects, form-data, proxy-from-env [CLEAN]
[email protected] — follow-redirects, form-data, proxy-from-env, plain-crypto-js@^4.2.1 [恶意]
[email protected] — follow-redirects, form-data, proxy-from-env [CLEAN]
[email protected] — follow-redirects,form-data,proxy-from-env,plain-crypto-js@^4.2.1 [恶意]
当开发者运行时,npm 会解析依赖树并自动安装。然后NPM执行的脚本,启动投放器。npm install [email protected]@4.2.1plain-crypto-jspostinstall
幻影依赖:对所有86个文件进行grep验证,确认Axios源代码中从未导入或要求()。它只是为了触发钩子而添加的。在清单中出现但代码库中零使用的依赖,是发布被攻破的高信心指标。[email protected]
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:网络安全透视镜 null《还在使用AI编程?前端常用库Axios被投毒,速查有没有受到影响》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论