热门代码库遭投毒,数百万开发者面临风险
疑似朝鲜黑客实施了近年来行动手法最复杂的供应链攻击之一,入侵了每周下载量约达 1 亿次的 JavaScript 库 Axios。这起攻击发生在 3 月 31 日凌晨,持续约三个小时。攻击者向软件中植入恶意代码,影响了医疗、金融、加密货币交易所和科技等行业数千家企业使用的软件。安全研究人员估计,受污染版本的下载量约占该库用户总量的 3%,可能导致数十万个系统面临远程访问木马威胁。这些木马旨在窃取加密货币和企业凭据。
Axios 是一款基于 Promise 的 HTTP 客户端,可在 Node.js 和浏览器中发起异步 API 请求,是现代 Web 应用的重要基础组件。从医疗服务提供商到金融机构,各类企业都依赖该库简化网站构建和数据交换。一些加密货币公司和数字资产行业的科技企业也在使用这款软件,因此尤其容易成为平壤创收型网络行动的目标。Axios 在企业环境中的广泛应用意味着,此次入侵会对下游依赖项和集成服务造成连锁风险。
谷歌威胁情报小组已正式将此次事件归因于 UNC1069。这一以经济利益为驱动的朝鲜威胁行为者至少从 2018 年起就一直活跃。该组织以攻击加密货币交易所、去中心化金融平台和风险投资公司而闻名,目的是为平壤的核武器和导弹项目筹集资金。据谷歌旗下情报公司 Mandiant 称,此次事件标志着朝鲜进一步升级行动,试图将全球软件供应链武器化,打击高价值经济目标。
Mandiant 首席技术官 Charles Carmakal 解释了这一威胁的长期影响。
我们预计,他们会利用最近在这次软件供应链攻击中获取的凭据和系统访问权限,攻击企业并窃取加密货币。评估此次行动对下游造成的影响,可能需要数月时间。
Huntress 安全研究员 John Hammond 表示,该公司已发现约 135 台遭入侵设备,涉及约 12 家企业。不过,他预计这只是最初一波发现;随着各组织完成取证审查,受影响范围还会扩大。
供应链入侵的运作方式
这次攻击始于黑客控制了 Axios 库主要维护者 @jasonsaayman 的 npm 账户。威胁行为者没有利用复杂的零日漏洞,而是使用长期有效的访问令牌绕过包括基于 OpenID Connect 的身份验证流程在内的现代安全控制。他们因此得以将两个植入木马的软件版本 1.14.1 和 0.30.4 直接发布到 Node Package Manager 注册表,既未触发常规安全警报,也无需通过多重身份验证。
Hammond 指出,一个关键配置缺陷为攻击提供了可乘之机。即使在已配置 OIDC Trusted Publishing 的 v1.x 分支中,发布工作流仍将 NPM_TOKEN 与 OIDC 凭据一同作为环境变量传递。两者同时存在时,npm 会优先使用令牌。这意味着无论 OIDC 如何配置,长期有效的令牌实际上都是所有发布者的身份验证方式。这一架构疏漏让攻击者绕过了防护措施;尽管维护者已在账户上启用多重身份验证,攻击仍然得手,凸显了旧式身份验证机制如何削弱现代安全框架。
攻击者表现出周密准备和耐心。在主要攻击发生前 18 小时,他们发布了一个名为 plain-crypto-js 的干净版幽灵依赖项,以建立发布记录,避免新账户没有发布历史而引起怀疑。在首次发布恶意 Axios 版本前 20 分钟,他们推送了该依赖项的武器化版本,其中包含一个安装后脚本,开发者安装或更新受感染库时便会自动执行。仅 39 分钟后,第二个植入后门的版本也随之发布,表明该组织已将部署流程自动化,以便在短暂的机会窗口内尽可能扩大传播范围。
攻击期间,维护者在夺回控制权时遭遇重大困难。一名协作者在公开的 GitHub 议题中表示,他们无法撤销发布恶意版本的账户权限,因为攻击者拥有的权限比他们还高。黑客仍掌握发布权限,开发者社区则争分夺秒控制损失。NPM 最终在恶意版本首次发布三小时后将其撤下,并对 plain-crypto-js 软件包实施安全冻结;一小时后,又以安全占位包替换该软件包。
跨平台恶意软件植入持久后门
安装后,这个恶意依赖项会部署一个经过混淆的 JavaScript 下载器,名为 SILKBELL。它从 sfrclak.com 远程命令与控制服务器获取针对不同平台的载荷。针对 Windows 系统,恶意软件会投放基于 PowerShell、能够执行任意命令的工具;macOS 用户收到的是一个 C++ Mach-O 二进制文件,Linux 系统则遭到 Python 后门攻击。安全研究人员将这一第二阶段恶意软件识别为 WAVESHAPER.V2,这是 UNC1069 曾在 2023 年以来针对加密货币行业的攻击中使用的一种后门的升级版。
此次攻击的技术架构体现出蓄意隐蔽和对平台的充分适配。黑客没有直接修改 Axios 源代码,因为这会在公开代码库中暴露,并触发代码审查警报;相反,他们通过依赖链植入恶意功能。StepSecurity 研究人员指出:“Axios 本身没有一行恶意代码,而这正是此次攻击如此危险的原因。”plain-crypto-js 软件包通过 package.json 文件中的 postinstall 钩子执行,让恶意软件在安装过程中悄然运行,之后再清除自身痕迹,并用干净版本替换软件包元数据。
WAVESHAPER.V2 每隔 60 秒向其命令与控制基础设施发送信标,并通过命令行参数接收动态 C2 URL。这样的设计让攻击者无需重新部署恶意软件就能更换基础设施。该后门支持四项主要功能:终止执行进程;枚举目录并收集包括时间戳和文件大小在内的详细元数据;通过 macOS 上的 AppleScript 或 Linux 上的 shell 命令等原生脚本语言运行系统命令;以及将任意二进制文件注入正在运行的进程。Elastic Security Labs 的分析发现,macOS 二进制文件引用的开发者构建路径直接关联到 BlueNoroff 的 webT 模块。该模块曾用于此前的 RustBucket 和 Hidden Risk 恶意软件行动,进一步印证了此次攻击与朝鲜有关。
平壤的数字创收机器
朝鲜的黑客行动已发展成为其受制裁核武器计划的主要资金来源。根据联合国报告和白宫 2023 年公布的估算,平壤约一半的导弹研发资金来自网络盗窃。近年来,黑客从银行和加密货币公司窃取了数十亿美元。仅去年一年,朝鲜行动人员就在一起创纪录的劫案中窃取了价值 15 亿美元的加密货币,展现出大规模攻破高价值目标的能力。
Wiz 战略威胁情报总监 Ben Read 解释说,朝鲜的行动方式有别于其他国家级行为者。
朝鲜不担心自己的声誉,也不在意最终是否会被识别出来。因此,尽管这类行动声势很大、备受瞩目,但他们愿意为此付出代价。
这种风险承受能力使平壤得以肆无忌惮地发动供应链攻击,而其他国家可能会因担心引发外交后果或暴露身份而避免此类行动。此次 Axios 入侵延续了三年前的一种攻击模式:据称,朝鲜行动人员曾渗透 3CX。这家软件供应商为医疗企业和连锁酒店提供语音和视频通话服务。
谷歌威胁情报小组首席分析师 John Hultquist 强调,该组织特别关注数字资产。
朝鲜黑客在供应链攻击方面经验丰富,过去曾利用这类攻击窃取加密货币。目前尚不清楚此次事件的全部影响,但考虑到遭入侵软件包的普及程度,我们预计其影响将十分广泛。
UNC1069 过去曾利用虚假 Zoom 会议、社会工程手段和多种独特恶意软件攻击金融科技公司,显示出其对加密货币生态系统持续且不断演变的关注。
供应链漏洞引发连锁反应
Axios 事件发生之际,针对开源软件生态系统的供应链攻击令人担忧地激增。过去一个月,安全团队接连应对了一系列入侵事件,包括针对热门安全扫描工具 Trivy、广泛用于集成人工智能模型的 Python 库 LiteLLM,以及通信平台 Telnyx 的攻击。谷歌已确认,Axios 攻击与近期 TeamPCP 供应链事件无关,但每一次成功入侵都会让攻击者获得新的凭据,并取得更多代码库的初始访问权限,形成不断自我延续的入侵循环。
Carmakal 警告称,近期一连串攻击已导致大量机密信息遭窃。他解释说:“过去两周被窃取的机密信息,将使攻击者在未来几天、几周乃至几个月内进一步发动软件供应链攻击,入侵软件即服务环境并危及下游客户,引发勒索软件和敲诈勒索事件,以及加密货币劫案。我们已发现数十万条被盗凭据。参与这些攻击的行为者动机各不相同。昨天 Axios 的 npm 供应链攻击影响范围广泛,还波及依赖 Axios 的其他热门软件包。”
SentinelOne 高级研究员 Tom Hegel 强调,这种威胁难以察觉。
每次你打开网站、查询银行余额或打开手机应用时,Axios 很可能都在后台某处运行,让这些操作得以完成。你不必点击任何东西,也没有犯错。是你已经信任的软件替你完成了这一切。
这一观察凸显了供应链攻击如何利用用户对成熟软件组件的隐性信任,绕过传统的安全意识培训和终端防护措施。
规避检测手法与取证对策
攻击者采用了复杂的反取证措施,增加了事件响应和检测的难度。恶意软件执行后,不仅删除自身安装文件,还篡改版本信息来欺骗防御人员。恶意 plain-crypto-js 软件包将自身版本报告为 4.2.0,而不是 4.2.1,让核验软件包完整性的安全团队陷入混乱。这种版本伪装手法旨在让管理员误以为系统运行的是正版软件,实际上安装的却是受感染版本。
ReversingLabs 首席软件架构师 Tomislav Pericin 将这次攻击称为未来行动的范本,而非孤立事件。
这里记录的行动复杂程度,包括维护者凭据遭入侵、为三种操作系统预先准备载荷、在不到 40 分钟内同时攻击两个发布分支,以及内置的取证痕迹自毁机制,都表明威胁行为者将此次行动策划成了可扩展的攻击。如果这次行动如今也出现在 PyPI 和 NuGet 上,就与攻击机制所反映的目标一致:尽可能触达更多开发者。
各组织现在必须审计 npm 依赖项,以及所有接入构建流水线的软件包管理器。Hammond 表示,考虑到当前开发趋势,这次攻击发生的时机尤其令人担忧。他指出,人工智能智能体正迅速普及,能够在缺乏审查或防护措施的组织中生成软件,这次入侵恰逢其时。风险并不限于直接使用 Axios 的用户,还包括开发工具会自动解析依赖项的所有组织。Semgrep 创始人 Isaac Evans 指出,即便开发者锁定了版本、维护了锁文件并遵循标准安全规范,仍可能遭到攻击,因为集成开发环境会在后台拉取依赖项。
保障软件供应链安全
各行业的安全团队正争分夺秒评估风险并修复受感染系统。使用 Axios 的组织必须立即审查依赖树,查找 1.14.1 和 0.30.4 版本,将其降级到 1.14.0 或 0.30.3 等经验证安全的版本,并轮换在安装时段内可能被访问到的所有凭据。入侵指标包括 node_modules 目录中存在 plain-crypto-js、与 sfrclak.com(IP 地址 142.11.206.73)建立网络连接,以及 macOS 系统临时目录中出现可疑进程,例如 /Library/Caches/com.apple.act.mond。
立即采取的缓解措施包括:在 package-lock.json 文件中锁定 Axios 的已知安全版本,防止意外升级;检查是否存在恶意依赖项;终止发现的恶意进程;在网络边界阻止已识别的命令与控制域名;将受影响系统与生产网络隔离;轮换在入侵期间可能泄露的所有机密信息和凭据。各组织还应审查访问日志,检查恶意软件可能窃取的 API 密钥或服务账户是否遭到未授权使用。
Sonatype 现场首席技术官 Ilkka Turunen 强调,此次事件暴露了根本性的信任问题。他解释说:“这次攻击表明,黑客现在利用的是人们对代码的信任,而不是代码本身。恶意功能是通过预先布置的依赖项引入的,而且经过专门设计,会抹去自身痕迹,因此攻击更难被发现,也更难及时弄清。这不只是恶意软件,它体现出一套更有计划、更成熟的作战手法。”Kaseya 安全负责人 Mike Puglia 指出,这些事件进一步证明了全球软件生态系统的脆弱性:攻破一个账户,就可能在数小时内让数万家组织暴露于风险之中。
要点
- 朝鲜威胁组织 UNC1069 入侵了 JavaScript 库 Axios。该库每周下载量达 1 亿次,存在于约 80% 的云环境中
- 恶意版本 1.14.1 和 0.30.4 于 3 月 31 日上线约三个小时,下载量约占用户总量的 3%,可能达到 60 万次
- 攻击者利用名为 plain-crypto-js 的幽灵依赖项部署 WAVESHAPER.V2,这是一种可感染 Windows、macOS 和 Linux 系统的跨平台后门
- 谷歌旗下 Mandiant 预计,该组织会利用窃取的凭据长期实施加密货币盗窃行动,为朝鲜核武器和导弹项目筹集资金
- 恶意软件具备先进的反取证能力,包括自我删除和版本伪装:将自身报告为 4.2.0,而非 4.2.1,以逃避检测
- 各组织必须审查依赖树、轮换所有凭据、阻止 C2 域名 sfrclak.com 和 IP 地址 142.11.206.73,并立即降级到安全的 Axios 版本
- 此次入侵利用长期有效的访问令牌绕过 OIDC 身份验证控制,凸显清理旧凭据的必要性






