Ledger 的 NPM 账户遭到入侵
Ledger 的 JavaScript “Connect Kit” 库在 npm 上遭到入侵,原因是一名前员工的 npm 账户被钓鱼,导致恶意版本被发布,并通过注入的资金清空代码据称盗走约 60 万美元。评论者批评 Ledger 反复出现的安全失误、依赖 CDN 以及绕过强 2FA 的自动化发布流程,以及 JavaScript 供应链整体的脆弱性;同时也提到 LavaMoat、Socket、Phylum 等工具,以及更强的签名和硬件实践,作为部分缓解措施。这起事件也再次引发争论:当用户经常对复杂交易进行盲签、并且仍需信任加密货币周围庞大的中心化生态时,硬件钱包到底有多大价值。
事件概览
- Ledger 的
@ledgerhq/connect-kitNPM 账户通过对一名前员工 NPM 凭据的钓鱼攻击而被攻破。 - 恶意版本 1.1.5–1.1.7 被发布;它们注入了一个“drainer”,并通过一个 rogue WalletConnect 项目重定向资金。
- Ledger 表示,恶意文件上线约 5 小时,实际盗取持续了不到 2 小时,影响金额约为 60 万美元。
- 版本 1.1.8 被推送作为干净替代;NPM 权限被收紧,发布密钥已轮换。
- 这次攻击针对的是通过 CDN 动态加载该套件的 dApp;许多下游项目因此被隐性暴露。
Ledger 的安全声誉与硬件钱包模型
- 一些评论者表示,Ledger 已经发生了“太多”事故(数据泄露、颇具争议的密钥导出类功能、钓鱼生态系统),并已转向替代方案(Coldcard、Trezor、SeedSigner 等)。
- 其他人则认为核心安全模型仍然成立:设备上的私钥并未被外泄;用户只是被诱导去签署了会转走资金的交易。
- 责任归属存在争论:有人将责任归咎于 Ledger 的流程和供应链选择;也有人责怪用户盲签且没有保管好助记词备份。
盲签与 UX 失败
- 以太坊交易通常很复杂,在小型硬件屏幕上无法人类可读,因此盲签成为事实上的常态。
- 有人认为,只要交易不能稳定地在设备上以清晰文本呈现,硬件钱包就是“安全表演”。
- 其他生态(如 Cosmos)被认为在人类可读签名方面做得更好。
NPM、CI 与供应链安全
- 讨论提到 NPM 会“强制”或“可选强制” 2FA,但自动化令牌和 CI 流水线可以绕过交互式 2FA。
- 有人担心,一个高价值包依赖于可被钓鱼的认证、前员工访问权限,以及来自 GitHub Actions 的自动发布。
- 关于 NPM 的责任存在争论:有人称 NPM 失职(签名薄弱、过去的完整性回归问题);也有人认为维护者必须正确配置安全措施。
- 一个长期争论是:传统的 PGP 风格维护者签名与更新的中心化 provenance 系统相比如何;一些人强烈偏好去中心化的 PGP 风格密钥。
检测工具与缓解措施
- 文中提到了多种安全工具(LavaMoat、Packj、Socket、Phylum、沙盒安装器),旨在发现恶意依赖或混淆代码。
- 据称其中一些工具对该包发出了警报;其他工具则承认存在缺口,尤其是在载荷从 CDN 获取时。
中心化与加密货币理想
- Tether 冻结攻击者的 USDT 被视为既有用(缓解损害),又与最初的去中心化理念相冲突。
- 评论指出,法币支持的稳定币(USDT、USDC)受中心化控制且可编程(黑名单、冻结),不同于 BTC/ETH 这类基础资产。