9月8日,NPM生态系统内发现了一起重大的软件供应链攻击,影响了多个广泛使用的JavaScript库。Ledger首席技术官Charles Guillemet发出警告,称一位受信任开发者的Node Package Manager账户遭到入侵,此事件才首次引起公众关注。初步评估显示,超过10亿次下载面临隐藏恶意软件的风险,该恶意软件旨在窃取加密货币。然而,随后的调查显示,受感染的软件包每周总下载量超过26亿次。

供应链攻击致超20亿次下载面临风险
供应链攻击致超20亿次下载面临风险
此次攻击主要针对一位名为“qix”的开发者账户,该开发者维护着多个流行的JavaScript库。其中包括chalk、strip-ansi、color-convert和debug,所有这些库都在服务器端和前端环境中被无数项目使用。攻击者通过一封虚假的支持邮件获取了该账户的访问权限,并向大约18个软件包推送了恶意更新。由于自动化依赖安装,恶意软件在入侵发生后的数小时内迅速传播。
Guillemet解释说,恶意代码旨在在交易过程中悄无声息地替换加密货币钱包地址。这使得依赖软件钱包的玩家面临资金损失的风险,如果他们在未注意到收款地址已被更改的情况下批准交易。
恶意加密剪贴板和MetaMask
安全研究人员将该恶意软件识别为一种“加密剪贴板”。它的功能是在交易的不同阶段替换钱包地址。在未检测到钱包的情况下,恶意软件通过挂钩浏览器功能(如fetch和XMLHttpRequest)来修改去中心化应用程序中的传出数据。这使得它能够扫描和更改应用程序数据中的地址。
如果检测到MetaMask等钱包扩展,恶意软件会变得更加直接,通过在签名之前拦截交易。它会在内存中修改钱包地址,以便当玩家查看交易时,欺诈性地址已经就位。恶意软件依赖于Levenshtein算法,该算法生成的地址与原始地址非常相似。这种相似性使得玩家不太可能识别出更改。

供应链攻击致超20亿次下载面临风险
攻击的最初迹象
开发者首次发现攻击迹象是构建系统返回了意外错误消息。对名为error-ex的依赖项进行进一步检查后,发现了包含名为checkethereumw的可疑函数的混淆代码,这表明其目标是以太坊钱包。分析师后来证实,该恶意软件包含对多个区块链(包括比特币、以太坊、Solana、Tron、莱特币和比特币现金)上钱包地址的引用。
受影响的软件包中,有一些是JavaScript生态系统中使用最广泛的。仅Chalk每周下载量就超过3亿次,debug超过3.5亿次,strip-ansi超过2.6亿次。总计,受感染的库每周总下载量超过26亿次,这凸显了对开发者社区的深远影响。
硬件钱包与软件钱包
尽管许多受感染的库并未直接与加密货币项目相关联,但它们集成到依赖链中意味着即使是不相关的应用程序也可能受到影响。与加密货币钱包和去中心化应用程序交互的项目被认为面临最高风险。
Guillemet表示,使用具有清晰签名功能的硬件钱包的玩家仍然安全,因为此类设备允许他们在批准前验证每笔交易。相比之下,软件钱包的玩家面临更大的风险,建议在依赖项完全审查和安全之前,务必格外小心。
寻找攻击者和被盗资金
由于公共区块链的透明性,攻击者的加密货币地址已被识别并正在积极监控。与该操作相关的主要以太坊地址是0xFc4a4858bafef54D1b1d7697bfb5c52F4c166976,以及其他几个备用地址。截至报告时,被盗资金尚未转移。这种监控为持续分析提供了机会,尽管被盗资产的全部范围仍不清楚。

供应链攻击致超20亿次下载面临风险
JavaScript和社区角色
JavaScript和web3社区已迅速采取行动控制此次事件。受感染软件包的恶意版本已基本从注册表中删除,但对于那些可能仍在其lockfiles中依赖过时版本的项目来说,风险依然存在。开发者被敦促审计其依赖项,锁定安全版本,并重新安装干净的构建以防止进一步的暴露。
安全专业人士还建议开发者轮换凭据,对NPM和GitHub等账户强制执行双因素身份验证,并使用npm ci等确定性安装方法来维持严格的版本控制。此外,建议玩家仔细验证所有加密货币交易,特别是如果依赖软件钱包。
最终想法
此次事件被描述为影响NPM生态系统最广泛的漏洞之一。尽管社区响应相对迅速,但此次攻击凸显了现代软件供应链的脆弱性以及对开源组件广泛依赖所带来的风险。
正如Guillemet强调的那样,在签名之前审查每笔交易仍然至关重要。此次漏洞提醒我们,即使是嵌入在应用程序基础设施深处的小型库,在受到攻击时也可能成为重要的攻击媒介。对于开发者和玩家来说,持续的警惕现在是维护web3和软件开发生态系统安全的关键部分。






