
一、事件速览:48 小时的 “完美犯罪”
二、攻击链全解析:五步 “投毒” 流程
1. 账号劫持:攻破 “守门人”
2. 依赖注入:埋下 “暗桩”
"dependencies":{"plain-crypto-js":"^4.2.1"}
3. 混淆投递:伪装 “良药”
先发布良性版本plain-crypto-js@4.2.0,建立发布历史,避免 “全新包” 警报
恶意包命名模仿知名库crypto-js,降低警惕性
脚本使用混淆技术,增加静态分析难度
当用户执行npm install时,恶意依赖被自动安装并触发setup.js执行。
4. 远控植入:释放 “木马”

5. 自毁灭迹:抹去 “痕迹”
三、技术细节:RAT 如何 “接管” 你的设备
1. 平台差异化攻击
%TEMP%\updater.exe | |||
/Library/Caches/com.apple.act.mond | |||
/tmp/.systemd-update |
2. C2 通信机制
四、如何自查:你是否已 “中毒”?
快速检测三步法
检查 Axios 版本:
bash(命令行) 运行 npmlist axios 查看当前版本,若显示1.14.1或0.30.4,则已中招。
检查恶意依赖:
bash(命令行) 运行lsnode_modules/plain-crypto-js 存在则可能被感染
扫描系统残留:
深度排查建议
检查近期npm install日志,查找plain-crypto-js相关记录
监控网络连接,查看是否有异常 IP 通信
检查系统自启动项、定时任务,删除不明条目
五、紧急修复:四步 “解毒” 指南
1. 降级并锁定版本
1.x分支用户(推荐)
npminstallaxios@1.14.0
0.x分支用户
npminstallaxios@0.30.3
{"dependencies":{"axios":"1.14.0"},"overrides":{// npm 8+"axios":"1.14.0"},"resolutions":{// yarn"axios":"1.14.0"}}
2. 清理恶意残留
删除恶意依赖
清理npm缓存
npmcache clean--force
3. 凭证轮换
npm/GitHub 令牌
云服务密钥
SSH 密钥
数据库密码
浏览器保存的密码
4. 强化安全配置
启用 npm 2FA(双因素认证)
CI/CD 中添加--ignore-scripts参数,禁用自动执行脚本
使用私有 npm 镜像,审核后再同步外部包
定期审计依赖树,使用snyk等工具检测风险
六、供应链安全启示录
开发者应做的 3 件事
版本锁定:在package.json中明确指定依赖版本,使用package-lock.json/yarn.lock
脚本管控:默认使用--ignore-scripts安装依赖,仅信任必要脚本
依赖审计:定期执行npm audit,使用 Snyk、Dependabot 等工具监控风险
企业级防御建议
七、总结:安全没有 “免死金牌”
行动清单:
立即检查并修复 Axios 版本
审计项目依赖树,清理可疑包
加强账号安全,启用 2FA
建立依赖安全管理制度
夜雨聆风