NPM供应链攻击:开发者账户被入侵,恶意代码针对加密货币钱包
近日,NPM(Node Package Manager)生态发生一起严重的供应链安全事件。知名开发者qix的账户被黑客攻破,攻击者利用该账户向多个广泛使用的JavaScript库推送了含有恶意代码的更新。这些恶意代码会主动扫描用户设备上的比特币及其他加密货币钱包文件(如私钥存储、配置文件或钱包数据库),一旦发现目标,就会通过替换底层交易签名函数中的地址填充逻辑,将用户原本要发送的收款地址篡改为攻击者控制的地址。由于篡改发生在代码执行层,用户在前端界面上看到的地址可能仍是正确的,但实际签名时会指向攻击者钱包,导致资金直接被盗。
攻击机制解析:如何绕过用户感知
NPM是Node.js生态的标准包管理器,被数百万JavaScript应用所依赖,包括大量非加密货币的普通网站和工具。攻击者选择的并非加密货币专属库,而是那些被无数应用通用的基础设施级包。通过控制上游开发者账户,黑客可以一节节向下游投毒——任何集成了受感染依赖的应用程序,无论是网页钱包、dApp还是普通网站,都可能在运行时执行恶意逻辑。对于基于浏览器或JavaScript运行时的网页钱包而言,风险尤为突出,因为它们往往直接加载后端代码或动态更新依赖,缺乏应用商店级别的审核机制。攻击者正是利用了这种开放性,将恶意代码伪装成正常的功能更新。
具体来说,恶意代码会拦截交易签名过程中用于获取收款地址的API调用。当用户输入收款地址并点击发送后,代码会在后台将地址替换为预设的攻击者地址,然后继续后续签名流程。由于地址替换发生在内存层面,前端显示的信息可能同时被修改,用户很难通过肉眼发现异常。
对加密用户的影响:重点关注Ordinals/Runes生态
此次攻击主要威胁使用网页钱包的比特币用户,尤其是在Ordinals铭刻、Runes代币交易等场景下活跃的用户。如果您使用的钱包软件恰好是在攻击发生后的短时间内更新了依赖(即包含了被篡改的NPM包),或者您的钱包直接从后端动态加载代码而未经过应用商店的审核,那么您就处于高风险中。对于普通的原生移动App钱包(如通过iOS或Android官方商店下载的版本),通常不会立即受到影响,因为它们的代码库是用原生语言(Swift、Kotlin等)编写的,不直接依赖JavaScript运行时。但如果您使用硬件钱包配合网页钱包(例如通过浏览器扩展连接Ledger或Trezor),则需要格外小心:在交易签名之前,务必在硬件设备屏幕上仔细核对收款地址是否与您期望的一致,因为恶意软件可能已经修改了浏览器中显示的地址信息。
此外,攻击的影响范围并不局限于加密货币钱包——任何使用了受感染NPM包的JavaScript应用都可能被植入后门,包括在线商城、社交平台等,但由于加密货币领域直接涉及资产转移,其危害最直接、最严重。
安全建议:如何防范与应对
根据本次事件的特点,不同用户应采取以下针对性措施:
- 使用硬件钱包+网页钱包的用户:在交易签名时,务必在硬件设备屏幕上独立确认收款地址,不要仅信任浏览器或钱包界面上显示的内容。由于硬件签名过程独立于计算机,只要设备本身未受损,就能有效拦截篡改。
- 使用软件密钥(热钱包)的用户:建议立即暂停使用该钱包,并在官方发布安全公告确认当前版本未受感染之前,避免进行任何交易。最安全的做法是等待钱包开发团队发布明确的修复声明或更新补丁。
- 所有网页钱包用户:检查您使用的钱包或dApp的依赖清单,看是否包含已知受污染的NPM包(具体包名需关注安全团队的官方披露)。如果发现使用了受影响的依赖,应立即停止使用该钱包,并将资金转移至未受感染的地址。同时,建议开启双重验证(2FA)以增加账户安全性。
此次事件再次敲响警钟:去中心化应用的安全性不仅取决于智能合约和共识机制,也依赖于底层的软件开发基础设施。供应链攻击正变得越来越普遍,用户需要保持高度警惕,及时关注安全机构的预警信息。

