Hacker News 中文摘要

RSS订阅

Axios在NPM上遭入侵——恶意版本植入远程访问木马 -- Axios Compromised on NPM – Malicious Versions Drop Remote Access Trojan

文章摘要

axios库在npm上被植入恶意版本,攻击者通过该漏洞传播远程控制木马程序,威胁用户安全。

文章总结

axios库在npm遭劫持:恶意版本植入远程控制木马

事件概述
2026年3月31日,StepSecurity发现流行的HTTP客户端库axios在npm上发布的两个恶意版本(1.14.1和0.30.4)。攻击者通过入侵axios核心维护者的npm账户,绕过正常的CI/CD流程,植入了一个跨平台远程访问木马(RAT)。

攻击手法
1. 账户劫持
- 攻击者篡改了维护者账户的绑定邮箱(改为ifstap@proton.me),并手动发布恶意包。 - 恶意版本未通过GitHub Actions的OIDC可信发布机制验证,而是使用被盗的npm令牌直接发布。

  1. 依赖注入
    • 恶意版本添加了从未在代码中调用的依赖项plain-crypto-js@4.2.1,其postinstall脚本会执行一个多层混淆的RAT投放器。
    • 投放器会根据操作系统(macOS/Windows/Linux)下载对应的第二阶段恶意负载,并自毁痕迹。

技术细节
- 投放器行为
- 通过XOR和Base64解码隐藏C2服务器地址(http://sfrclak.com:8000/6202033)。
- macOS:伪装成系统缓存文件(/Library/Caches/com.apple.act.mond)。
- Windows:持久化PowerShell解释器(%PROGRAMDATA%\wt.exe)。
- Linux:写入临时Python脚本(/tmp/ld.py)。

  • 隐蔽性
    执行后删除自身脚本,并用干净的package.json覆盖,仅凭目录存在(node_modules/plain-crypto-js)可判断是否感染。

影响范围
axios作为JavaScript生态最常用的HTTP库,每周下载量超3亿次。此次攻击可能影响大量Node.js和前端项目。

应对措施
1. 立即检查
bash npm list axios | grep -E "1\.14\.1|0\.30\.4" ls node_modules/plain-crypto-js 2>/dev/null 2. 修复方案
- 降级至安全版本(1.14.0或0.30.3)。
- 在CI/CD中启用--ignore-scripts禁用postinstall
- 若发现感染,需全盘重置系统并轮换所有凭证。

防护建议
- 使用StepSecurity等工具监控npm包发布异常。
- 限制CI/CD管道的网络出口流量,阻断C2通信。

(注:原文中的公司产品推广、导航菜单等非核心内容已精简,保留技术分析和应对细节。)

评论总结

总结评论内容:

  1. 供应链安全问题引发担忧
  • 评论1指出"供应链问题持续存在"
  • 评论6质疑"什么时候我们才能停止使用这些不安全的包管理器?"
  • 评论7提到axios被入侵的影响范围"几乎每个项目都在使用它"
  1. 认证机制不足
  • 评论2质疑"npm去年就要求2FA了,怎么还能被绕过?"
  • 评论6推测"凭证可能是在上次LiteLLM事件中被盗的"
  1. 防御措施建议
  • 延迟更新:
    • 评论5建议"应该增加依赖项更新的延迟"
    • 评论9提供具体配置"设置7天的最小发布年龄"
  • 沙箱隔离:
    • 评论11推荐"在Linux上使用bwrap进行沙箱隔离"
    • "限制爆炸半径到你的CWD和包管理器缓存"
  • 完整性检查:
    • 评论10建议"固定依赖项版本并进行审计"
    • 评论12指出"需要实际发布内容的完整性检查"
  • CI/CD安全:
    • 评论12建议"npm install --ignore-scripts在CI中应该是默认的"
    • 评论13提出"可能需要人工干预或时间延迟机制"
  1. 技术细节
  • 评论7披露攻击方式:"注入虚假依赖项plain-crypto-js@4.2.1"
  • 评论12描述攻击特征:"执行后自删除以逃避检测"
  • 评论8探讨"通用恶意软件检测在供应链中的应用"
  1. 替代方案讨论
  • 评论4表示"拒绝使用Node或NPM"
  • 评论7提到"pnpm/bun用户需要手动批准postinstall脚本是好事"
  • 评论11建议"服务器部署时使用容器加固"