找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3011

积分

0

好友

403

主题
发表于 12 小时前 | 查看: 13| 回复: 0

朝鲜黑客UNC1069供应链攻击流程图

最近,一则来自国外安全媒体的重磅消息让整个开发社区震动:每周下载量超过1亿次的流行HTTP客户端库Axios,成为了朝鲜国家级黑客组织UNC1069的攻击目标。

攻击手法并非利用复杂的0-day漏洞,而是通过社会工程学手段,成功盗取了Axios核心维护者Jason Saayman的npm官方账号权限。在掌握最高控制权后,攻击者向全球发布了两个带有恶意后门的版本:1.14.10.30.4

你可能会有疑问:npm、Axios到底是什么?为什么它们的沦陷会引发如此大的关注?

理解被攻击的“数字基础设施”

  • npm:软件供应链的核心仓库
    npm(Node Package Manager)是Node.js的官方包管理器,可以看作是开发者专属的“应用商店”。开发者通过package.json文件声明项目依赖,运行npm install后,npm会自动从云端下载所有需要的组件。这个生态的繁荣也带来了致命弱点:过长的信任链。任何一个流行包的维护者账号失守,都可能让依赖它的成千上万个项目瞬间沦陷。

  • Node.js:现代应用与AI的底层引擎
    Node.js是基于JavaScript的服务器运行环境,是现代网页后端、自动化脚本乃至当前火热的AI智能体(如OpenClaw) 的常见运行底座。其生态依赖关系复杂,一个中型项目可能嵌套数千个包,使得供应链攻击的风险呈指数级放大。

  • Axios:无处不在的网络“信使”
    Axios是前端和Node.js领域最主流的HTTP请求库。几乎任何需要与后端API或外部服务(如调用ChatGPT接口)通信的程序都在使用它。它的绝对统治地位意味着,一旦Axios被成功投毒,影响范围将如同在自来水系统中下毒般广泛。

攻击链拆解:一场“隐形”的完美犯罪

UNC1069这次实施的是一种典型的“依赖劫持”攻击,其高明之处在于完全避开了对核心源码的修改,让常规代码审查和漏洞扫描工具失效。

第一步:修改package.json,植入恶意依赖

攻击者在上传Axios 1.14.1时,并未改动核心业务代码,而是只修改了package.json文件,在其中强行添加了一个名为plain-crypto-js的依赖。

Axios 版本状态 dependencies (依赖清单) 危险程度
正常版 (1.14.0) 仅包含follow-redirectsform-data等正常依赖 安全 ✅
恶意版 (1.14.1) 正常依赖 + "plain-crypto-js": "x.x.x" 极高风险 💀

开发者审查代码差异时,注意力通常集中在src目录下的业务逻辑,极易忽略配置文件中多出的这一个“不起眼”的包。

第二步:利用postinstall钩子,实现“安装即执行”

恶意包plain-crypto-js内部隐藏了致命机关。在其package.json中,攻击者设置了postinstall脚本钩子:

"scripts": {
  "postinstall": "node setup.js"
}

postinstall是npm的生命周期钩子,其含义是“在包安装完成后,自动执行指定命令”。这意味着:受害者无需在代码中显式引入(require)这个恶意包,甚至无需启动项目。只要npm install执行完毕,恶意的setup.js脚本就会在后台静默运行。 整个过程没有弹窗、没有提示。

第三步:多平台适配攻击载荷

setup.js(安全研究人员将其命名为SILKBELL)充当了载荷分发器的角色。它会首先探测受害者的操作系统,然后精准投递对应的后门程序:

  • Windows:释放隐藏的VBS脚本,进而拉起PowerShell执行载荷,尝试绕过安全软件。
  • macOS:写入AppleScript,将编译好的Mach-O恶意二进制文件伪装成系统缓存文件(如com.apple.act.mond),实现后台持久化。
  • Linux/服务器:针对常见的CI/CD构建环境,下载Python后门脚本,并使用nohup等命令使其在后台持续运行。

第四步:反取证与痕迹清除

为了增加事后分析的难度,该恶意脚本执行后会进行一系列“毁尸灭迹”操作:删除自身脚本、删除包含恶意postinstallpackage.json,并用一个预先准备好的、内容干净的package.md文件替换为package.json。这使得安全人员在案发后检查node_modules目录时,难以发现直接的恶意文件证据。

第五步:植入高级持久化后门WAVESHAPER.V2

最终,攻击者会在受害机器上植入名为WAVESHAPER.V2的后门程序。该后门具备心跳机制(约每60秒与攻击者的C2服务器通信一次),并拥有多种高危能力:

  1. kill:自我销毁,清除痕迹。
  2. rundir:扫描磁盘目录和文件。
  3. runscript:在受害者机器上执行任意Shell、PowerShell或AppleScript命令。
  4. peinject:将更深层的恶意二进制文件直接注入到系统内存中运行,实现文件不落地的无文件攻击,规避传统杀毒软件的检测。

对AI智能体的潜在影响

本次攻击的深远影响在于其对上层应用,特别是AI智能体的威胁。像OpenClaw这类运行在Node.js环境中的AI应用,其底层依赖Axios进行网络通信。一旦部署环境在构建或更新时不慎安装了恶意版本的Axios,AI智能体本身就会在不知不觉中被“夺舍”。

攻击者可以利用已植入的远控后门,窃取AI智能体访问的敏感数据(如API密钥、私有模型参数)、篡改其决策逻辑的输出,甚至将其作为跳板,进一步渗透企业内网。这种从底层基础设施发起的供应链攻击,对高度依赖自动化与智能化的现代IT体系构成了严峻挑战。

安全建议与反思

  1. 锁定依赖版本:在package.json中精确指定依赖包版本,避免使用波浪号(~)或插入符(^)等自动更新版本范围的符号。
  2. 启用依赖审计:定期使用npm audit或集成类似的软件成分分析(SCA)工具,检查项目依赖中的已知漏洞。
  3. 审查package.json变更:在更新任何依赖时,仔细查看package.json的diff,警惕新增的、来源不明的依赖项。
  4. 谨慎对待postinstall等脚本:对于开源依赖,可审查其package.json中的脚本定义。在企业环境中,可以考虑配置npm或yarn,禁止运行生命周期脚本。
  5. 采用私有镜像源与安全扫描:企业应搭建内部的私有包镜像,并在镜像入口处实施严格的安全扫描和恶意代码检测。

这次事件再次凸显了开源软件供应链安全的极端重要性。作为开发者,我们需要时刻保持警惕,构建纵深防御体系。同时,关注和参与云栈社区等平台的安全讨论,共享威胁情报,是提升整体生态安全水位的关键。




上一篇:折叠屏iPhone Ultra富士康试生产,预计下半年发布,时间表或生变
下一篇:Effective Java通用程序设计:避开开发中的那些坑与核心原则详解
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-7 16:54 , Processed in 0.575092 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表