跳到主要内容
Supply Chain Attack Exposes Over 2 Billion

供应链攻击致超20亿次下载面临风险

NPM供应链攻击波及26亿次周下载量,植入加密钱包恶意软件。建议开发者立即审计依赖项。

更新于
阅读时间
7 分钟
主题
新闻
Supply Chain Attack Exposes Over 2 Billion
广告

9月8日,NPM生态系统遭遇了一次重大的软件供应链攻击,多个广泛使用的JavaScript库受到波及。此次安全漏洞最初由Ledger首席技术官Charles Guillemet发出警告,称一名受信任开发者的Node Package Manager账户遭到劫持。初步估计受影响下载量超过10亿次,但进一步分析显示,受损软件包的每周下载量实际上超过了26亿次。

Supply Chain Attack Exposes Over 2 Billion

Supply Chain Attack Exposes Over 2 Billion

Supply Chain Attack Exposes Over 2 Billion

此次攻击的目标是一位名为“qix”的开发者账户,他维护着包括chalk、strip-ansi、color-convert和debug在内的多个热门JavaScript库。这些库出现在无数项目中,涵盖了服务器端和前端环境。攻击者通过伪造的支持邮件获取了访问权限,并向约18个软件包推送了恶意更新。自动化的依赖项安装使得恶意软件在数小时内迅速传播。

Guillemet解释称,恶意代码会在交易过程中静默替换加密货币钱包地址。依赖软件钱包的用户如果未察觉收款地址被篡改就批准了交易,将面临资金损失的风险。

Malware Crypto Clipper and MetaMask

安全研究人员将该恶意软件归类为“加密货币剪贴板劫持者”(crypto clipper)。它会在交易的各个阶段替换钱包地址。当未检测到钱包时,恶意软件会通过挂钩fetch和XMLHttpRequest等浏览器函数,修改去中心化应用中的传出数据,从而扫描并篡改应用数据中的地址。

如果存在MetaMask等钱包插件,恶意软件会在签名之前拦截交易。它会修改内存中的钱包地址,以便用户在审查交易时看到的是欺诈地址。该恶意软件使用Levenshtein算法生成与原始地址高度相似的地址,使得篡改行为更难被发现。

Supply Chain Attack Exposes Over 2 Billion

Supply Chain Attack Exposes Over 2 Billion

First Signs of the Attack

开发者最初是在构建系统返回意外错误消息时注意到此次攻击的。经检查,名为error-ex的依赖项中包含一段混淆代码,其中有一个名为checkethereumw的可疑函数,表明其目标是以太坊钱包。分析人员证实,该恶意软件包含指向多个区块链的钱包地址引用,包括Bitcoin、Ethereum、Solana、Tron、Litecoin和Bitcoin Cash。

受影响的软件包包括JavaScript生态系统中最常用的一些库。Chalk每周下载量超过3亿次,debug超过3.5亿次,strip-ansi超过2.6亿次。这些受损库每周的总下载量超过26亿次,显示了其对开发者社区影响的规模。

Hardware vs Software Wallets

许多受感染的库并未直接与加密货币项目挂钩,但它们集成在依赖链中,意味着即使是不相关的应用程序也可能受到波及。与加密货币钱包和去中心化应用交互的项目面临的风险最高。

Guillemet指出,使用具有清晰签名(clear-signing)功能的硬件钱包的用户仍然是安全的,因为这些设备允许在批准前验证每一笔交易。软件钱包用户面临的风险更大,在依赖项被完全审查和保护之前,应保持极度谨慎。

Finding the Attacker and Funds Stolen

攻击者的加密货币地址已被识别,并正通过公共区块链透明度进行主动监控。与该行动相关的主要Ethereum地址为0xFc4a4858bafef54D1b1d7697bfb5c52F4c166976,此外还有几个备用地址。截至报告发布时,被盗资金尚未转移。这种监控使得持续分析成为可能,尽管被盗资产的全部范围尚不明确。

Supply Chain Attack Exposes Over 2 Billion

Supply Chain Attack Exposes Over 2 Billion

JavaScript and Community Role

JavaScript和web3社区迅速采取行动以遏制此次事件。受损软件包的恶意版本已基本从注册表中移除,但对于可能仍在其锁文件(lockfiles)中依赖过时版本的项目,风险依然存在。开发者被敦促审计其依赖项、锁定安全版本并重新安装干净的构建版本,以防止进一步受损。

安全专家建议开发者轮换凭据,在NPM和GitHub等账户上强制执行双重身份验证,并使用npm ci等确定性安装方法来保持严格的版本控制。用户应仔细核对所有加密货币交易,特别是在依赖软件钱包时。

Final Thoughts

此次事件是NPM生态系统遭遇的最广泛的漏洞攻击之一。虽然社区反应相对迅速,但此次攻击暴露了现代软件供应链的脆弱性,以及对开源组件的广泛依赖所带来的风险。

正如Guillemet所强调的,在签名之前审查每一笔交易仍然至关重要。此次漏洞表明,即使是嵌入在应用程序基础设施深处的小型库,一旦被攻破,也可能成为重大的攻击向量。对于开发者和用户而言,持续的警惕现在已成为维护web3和软件开发生态系统安全的关键部分。

广告