npm 遭受恶意软件攻击,开发者需检查软件包安全
专家表示,此次有史以来最大规模的事件给开发者敲响了警钟,他们应立即检查软件包的安全性。全球最大的开源软件包注册表 npm 又遭受了一次快速传播的恶意软件攻击,此次攻击的目标是广泛使用的企业级数据可视化工具 AntV。
与上周针对 TanStack 的那次备受瞩目的 npm 攻击不同,上次攻击利用了复杂的 GitHub Actions 缓存投毒漏洞,而 5 月 19 日凌晨的这次最新攻击采用了更为传统的方式,即窃取了一个高价值 npm 维护者账户的凭证。
攻击者发布大量恶意版本,AntV 命名空间被攻破
据 SafeDep 分析,涉事账户 atool(i@hust.cc)负责发布 timeago.js JavaScript 库,该账户有权管理大量软件包,其中包括一些热门工具,如 size - sensor(每月下载量 420 万次)、echarts - for - react(380 万次)、@antv/scale(220 万次)和 timeago.js(115 万次)。
凭借这种权限,攻击者在短短 22 分钟内就发布了至少 637 个恶意版本,涉及 317 个不同的 npm 软件包。这导致阿里巴巴的 AntV 命名空间大面积被攻破,AntV 是一个在亚洲、美国和欧洲不断发展的平台,用于构建仪表盘、用户界面和交互式应用程序。
今年 npm 供应链攻击趋势严峻
Aikido Security 在分析中指出,今年针对 npm 供应链的攻击呈现出严峻的趋势。“这是我们追踪到的第三波重大攻击。从 4 月针对少数 SAP 软件包的攻击,到 TanStack 攻击浪潮中的 169 个软件包,再到现在数量更多的软件包。每一波攻击都比上一波更快、影响范围更广。”
“噩梦重演”:恶意软件窃取令牌与凭证
任何不幸感染了这些恶意软件包的用户,都会被 Mini - Shai - Hulud 蠕虫盯上。该蠕虫的源代码最近在 GitHub 上被短暂分享给了其他犯罪分子。其目的是窃取 npm 和 GitHub 令牌,以及来自 130 个文件路径的凭证,包括多个云平台、Kubernetes、Docker、Hashicorp、密码保险箱、SSH 密钥和比特币钱包等。
出于未知原因,攻击者随后利用窃取的 CI/CD 令牌,将窃取的数据存储在以科幻小说《沙丘》为主题的公共 GitHub 仓库中。在攻击发生后的几个小时内,这些仓库的数量就增加到了 2500 个。每个仓库的描述中都包含字符串 “niagA oG eW ereH :duluH - iahS”(即 “Shai - Hulud: Here We Go Again” 的倒序)。
理论上,该恶意软件还能够通过安装在 ~/.local/share/kitty/cat.py 的基于 Python 的后门实现持久化。不过,据安全公司 Wiz 称,这一功能目前似乎尚未激活。此次攻击背后的团队 TeamPCP 野心勃勃:该恶意软件甚至试图修改 Claude Code 的 settings.json 文件,这样即使受感染的 npm 软件包被移除,恶意软件也能凭借完整的大语言模型(LLM)权限悄悄恢复。
后续措施:开发者需谨慎对待剩余软件包
攻击被发现后,AntV 的维护者在 GitHub 上发布了以下警告:“由于受到外部蠕虫攻击的影响,与 AntV 相关的 npm 软件包已被攻破。受感染的软件包已被删除,其余软件包已被标记为弃用。” 警告内容还提到,“建议用户仔细甄别并下载最新版本。AntV 正在积极联系 npm 注册表,以移除这些弃用的软件包。”
也就是说,虽然恶意版本已被删除,但对于剩余的软件包仍需格外谨慎,这也促使开发者对软件包进行审计,并迁移到已知的安全版本。由于此次攻击感染了同一库的多个版本,确定一个已知的安全版本并非易事。开发者可以参考 SafeDep 发布的受影响软件包列表(以 .csv 文件形式提供),不过可以肯定的是,如果正在使用 AntV 库的任何版本,都有被感染的风险。
除此之外,建议开发者检查 CI/CD 环境和仓库是否存在被攻击的迹象,并轮换所有凭证。但专家给出的最重要建议其实很简单:通过加强监控和软件包验证,增强对未来针对 npm 攻击的防御能力。
关键词
网络攻击、网络犯罪、安全、开发工具、软件开发