谷歌将Axios npm供应链攻击归因于朝鲜APT组织UNC1069

攻击事件核心归因与技术细节

谷歌威胁情报团队将近期Axios npm软件包供应链攻击事件归因于代号UNC1069的朝鲜黑客组织。该攻击以经济利益为目标,通过污染Axios软件包来针对依赖该库的开发者与组织。

谷歌威胁情报分析师John Hultquist证实了这一归因结论,指出该组织在供应链攻击领域的活跃度持续上升。谷歌威胁情报组分析报告指出:"基于攻击者使用的WAVESHAPER.V2恶意软件(该组织此前使用的WAVESHAPER恶意软件的升级版本),GTIG将此次攻击活动归因于UNC1069------这个至少自2018年起活跃的、以经济利益为导向的朝鲜背景威胁组织。此外,本次攻击使用的基础设施与UNC1069过往活动存在重叠。"

攻击者入侵了Axios维护者的npm账户(该库每周下载量超1亿次),发布恶意版本以在Linux、Windows和macOS系统上传播远程访问木马。当异常更新出现在npm仓库后,多家安全公司识别出这起供应链攻击。

恶意版本Axios(1.14.1和0.30.4)在一小时内发布,既未通过OIDC验证,也没有对应的GitHub提交记录,这些异常立即引发安全警报。研究人员认为攻击者入侵了维护者Jason Saayman的npm账户。

Aikido Security发布的报告警告:"任何在恶意版本下架前安装的用户都应假定系统已遭入侵。这些恶意版本会注入plain-crypto-js依赖项,部署针对macOS、Windows和Linux的跨平台远程访问木马。"

虽然具体影响尚不明确,但考虑到Axios每月约4亿次的下载量,在短暂的攻击窗口期内可能有大量下游项目受到影响。Socket研究人员发现,名为plain-crypto-js@4.2.1的恶意包在发布后数分钟内即被检测到,这很可能是针对Axios的协同攻击的一部分。攻击者将该依赖项植入两个受污染的Axios版本,使得恶意软件能通过这个被数百万项目信任的库传播。由于许多开发者启用自动更新功能,受影响版本可能在未被察觉的情况下被安装。

恶意代码采用混淆技术规避检测,并通过安装后脚本自动运行。执行后,它会检测操作系统类型(Windows、macOS或Linux)并下载针对各平台的第二阶段载荷。研究人员确认,针对macOS系统会投递功能完整的远程访问木马(RAT),可收集系统信息、与C2服务器通信并执行命令。

Socket报告指出:"Elastic Security安全研究员Joe Desimone在C2服务器下线前捕获并逆向分析了macOS第二阶段二进制文件。该载荷是用C++编写的全功能远程访问木马。"

为消除痕迹,恶意软件运行后会删除安装文件并恢复看似正常的包内容。专家认为此次攻击得以实施,关键在于维护者账户遭入侵,使得攻击者能未经授权发布恶意更新。

攻击影响范围与潜在风险

谷歌威胁情报组(GTIG)与其他研究人员将Axios npm供应链攻击归因于至少自2023年起活跃的朝鲜黑客组织UNC1069。SentinelOne此前观察到该组织使用macOS恶意软件,包括通过伪造Zoom活动攻击加密货币公司。Axios攻击中使用的恶意软件与朝鲜行动相关的WAVESHAPER变种高度相似。Hultquist强调该组织在供应链攻击和加密货币窃取方面具备专业能力。

WAVESHAPER.V2是UNC1069使用的多功能后门,通过C++、PowerShell或Python针对macOS、Windows等环境。它每60秒以Base64编码的JSON数据向C2服务器发送信标,使用硬编码User-Agent后等待指令。功能包括侦察(系统信息、运行进程)、目录枚举、脚本执行和PE注入。在Windows系统上,它通过隐藏批处理文件和注册表项实现持久化,具备完整的远程命令执行和文件系统访问能力。

供应链攻击趋势与防御启示

Hultquist表示:"朝鲜背景的威胁组织在供应链攻击方面经验丰富,历史上常借此窃取加密货币。虽然本次事件的全貌尚不清晰,但考虑到被污染软件包的流行度,其影响将十分深远。"

谷歌报告总结指出:"朝鲜黑客发动的这起攻击影响广泛,由于众多流行软件包依赖axios,将产生连锁反应。值得注意的是,UNC1069并非近期唯一成功实施开源供应链攻击的威胁组织。UNC6780(又名TeamPCP)近期污染了与Trivy、Checkmarx和LiteLLM等项目关联的GitHub Actions和PyPI软件包,部署SANDCLOCK凭证窃取程序以实施后续勒索活动。这些攻击可能导致数十万条机密信息泄露,短期内可能引发更多软件供应链攻击、SaaS环境入侵(导致下游客户受影响)、勒索软件事件以及加密货币盗窃。"

相关推荐
kyriewen12 小时前
我手写了一个 EventEmitter,面试官追问了 6 个问题——第 4 个我没答上来
前端·javascript·面试
IT_陈寒12 小时前
Java的Date类又坑了我一次,改用时间戳真香
前端·人工智能·后端
小林攻城狮13 小时前
使用 Transport 节流解决 Vercel AI SDK 流式渲染卡死问题
前端·react.js
前端缘梦13 小时前
告别 TS 运行时类型漏洞!Zod 完整入门实战教程(前端 / 全栈必备)
前端·react.js·全栈
the_answer13 小时前
Webpack vs Vite 深度对比分析
前端·webpack
转转技术团队13 小时前
验证码识别实战:前端不写页面,改训模型了?
前端
MomentYY13 小时前
Temperature:AI 的“脑洞旋钮”
前端·llm·ai编程
远航_14 小时前
OpenSpec 完整详细介绍
前端·后端
召钱熏14 小时前
状态枚举正确≠渲染正确:一个语音按钮的状态机边界修复实录
android·前端
SkyWalking中文站14 小时前
认识 Horizon UI · 1/17:SkyWalking 新一代可观测性控制台
运维·前端·监控