文章总结: 2026年3月30日Axios供应链投毒事件分析显示,攻击者通过盗用维护者账号发布恶意axios版本(1.14.1/0.30.4),并植入后门依赖plain-crypto-js。该包利用postinstall钩子执行混淆的setup.js脚本,最终窃取环境变量并下载远程恶意载荷。事件在5小时内被Socket.dev检测并下架。建议启用npm双因素认证、使用供应链安全工具检测可疑依赖、定期审计第三方包。 综合评分: 81 文章分类: 供应链安全,恶意软件,漏洞分析,安全运营,解决方案
)***
一、投毒时间线
- 3月30日23:59:12:攻击者发布恶意依赖包[email protected]
- 3月31日00:00左右:攻击者利用被盗的 Axios 维护者 npm 账号,绕过 GitHub Actions CI/CD,手动发布[email protected]与[email protected]
- 3月31日00:05:41:Socket.dev 自动化检测发现异常包plain-crypto-js
- 3月31日04:00:00:npm官方下架恶意npm包plain-crypto-js,[email protected]与[email protected]
二、投毒运作原理
copy from socket.dev
五、总结和加固(冷静期配置)
最近投毒攻击事件越来越多了,而且都挺严重的,socket.dev官方也建议对于python、node的依赖安装,可以采取“冷静期”配置,意思是:
限制只能下载发布时间超过 n 天的包,防止因下载未经审核的最新恶意包而导致的供应链安全风险。
一般来说,7天足够安全公司响应和威胁情报感知,基本可以杜绝投毒攻击。
可以参考如下进行配置:
| | | | | | | — | — | — | — | — | | 包管理工具 | 最低版本要求 | 开启方式 | 配置内容 | 单位 | | npm | v11.10.0+ | 执行命令 | npm config set min-release-age 7 –global | 天 | | pnpm | v10.16.0+ | 执行命令 | pnpm config set minimum-release-age 10080 | 分钟 | | yarn | v4.10.0+ | 修改配置文件 | echo “npmMinimalAgeGate: 10080” >> ~/.yarnrc.yml | 分钟 | | bun | v1.3.0+ | 修改配置文件 | ~/.bunfig.toml [install] minimumReleaseAge = 604800 # seconds 但下面情况不符合预期,待后续跟进: “socket”: “^1.1.78” //拦截生效 “socket”: “1.1.78” //拦截失败 | 秒 | | uv | 0.2.12+ | 修改配置文件 | 两种方式都可以: 1、环境变量方式: export UV_EXCLUDE_NEWER=”$(date -u -v-7d +%Y-%m-%d)” 2、配置文件方式: ~/.config/uv/uv.toml exclude-newer = “7 days” | 天 | | pip | 暂不支持 | | 暂不支持 | |
若因冷静期限制导致紧急补丁无法安装怎么办呢?
可以通过下面的命令临时解除:
npm install <package> --min-release-age 0 //验证可以bypass
pnpm add <package> --config.minimum-release-age=0 //验证可以bypass
uv add <package> --exclude-newer "0 days" //验证可以bypass
bun add <package> --minimum-release-age 0 //验证可以bypass
还有固定版本也很重要,大家行动起来~~
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全随笔 0xNvyao 0xNvyao《20260330Axios投毒事件总结》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。












评论