
7月30日,一名攻击者利用某些 Coldcard 硬件钱包生成的弱种子,从数百个地址窃取了价值约数千万美元的比特币。
根据 Galaxy Research 的深入分析,核心比特币盗窃事件发生在一个精心策划的、持续约25分钟的突发性活动中。随后更广泛的分析将大约1196个地址和多达1083个比特币(价值近7000万美元)与持续约41分钟的活动联系起来。随着调查人员继续追踪比特币公共区块链上的交易,最终数据可能会有所变化。
受影响的钱包主要属于长期持有者,他们使用运行自2021年3月起发布的易受攻击固件的 Coldcard 设备生成了恢复种子。Coldcard 是一款由加拿大制造商 Coinkite 生产的物理隔离硬件钱包,旨在将比特币 (BTC) 密钥与联网设备隔离。
许多被清空的地址已闲置多年。攻击者行动迅速,支付了高额的固定交易费,且不留任何找零,这意味着每个地址都被彻底清空。这种模式表明,这是一次使用预先准备好的私钥列表进行的自动化操作,而非客户自行转移资金。
此次盗窃并非由网络钓鱼、用户电脑上的恶意软件、设备被盗或传统的远程入侵造成。而是由于固件错误削弱了部分Coldcard设备生成钱包种子时所使用的随机性。这些种子看起来正常,但其可能的组合范围远小于用户被告知的范围。
比特币钱包种子是一个秘密信息,通常以12或24个单词的形式呈现,钱包会根据该种子生成地址和私钥。一个正确生成的12单词种子包含128比特的熵,这是一个技术指标,用于描述极其庞大的可能组合数量,使得猜测种子几乎不可能。
Coldcard 设备原本应该通过设备微控制器内部的硬件随机数生成器来获取随机性。该组件利用的是外部观察者无法预测的物理电噪声。
然而,在2021年的一次软件库迁移过程中,Coinkite 披露,两个接口匹配的随机数函数出现了混淆。其中一个函数访问的是设备自身的硬件随机数生成器,而另一个函数则是一个功能较弱的软件备用方案,用于那些没有合适硬件的开发板。
由于 Coinkite 提供了自己的硬件封装器,一个配置设置禁用了默认的 MicroPython 硬件路径。该软件仅检查该设置是否存在,而未检查其是否已启用。由于该设置存在但值为零,因此构建成功完成,而种子生成则静默地切换到了功能较弱的软件生成器。
这种备用方案严重依赖于可预测的设备信息,包括类似于序列号的芯片标识符和与启动时序相关的内部时钟值。攻击者如果能够缩小这些输入的范围,那么其搜索范围将远小于安全生成的种子所预期的128位范围。
Coinkite 估计,在目前的假设下,易受攻击的 Mk3 种子的有效搜索空间约为 0位。这仍然是一个相当大的可能性范围,但可以使用专门的计算设备进行搜索,尤其是在攻击者可以将候选种子与区块链上可见的比特币地址进行比较的情况下。
后续的 Coldcard 型号,包括 Mk4、Q 和 Mk5,通过安全元件增加了一些随机性。然而,只有一部分随机性到达了受影响的生成器,导致在安装修正固件之前创建的种子有效熵估计只有72位。这比Mk3的方案要强,但仍然低于预期的128位标准。
这种区别类似于用根据锁的序列号和首次开启时间计算出的密码替换一个完全随机的密码。生成的密码看起来可能是随机的,但知道计算公式并能估算出初始信息的人可以重新生成它。许多用户正在迁移,不仅是从 Mk3 设备迁移,还有从 Mk4、Q 和 Mk5 设备迁移的用户。
Coinkite 在发现安全威胁后发布了安全公告并修复了固件。该公司表示,使用受影响固件生成种子的用户应使用修复后的固件版本创建一个全新的种子,并将比特币转移到该种子所控制的地址。
仅仅安装更新是不够的。在有缺陷的系统中创建的种子将永久保持弱化状态,因为固件更新无法为已存在的单词添加随机性。
Coinkite 建议用户更新设备、创建新的助记词、验证备份和钱包指纹、确认收款地址、发送一笔小额测试交易,然后将剩余余额转移过去。用户应保留旧的备份直至转账确认,但不应再将旧的助记词视为安全信息。
该公司已确定修复的版本包括 Mk3 版本4.2.0或更高版本、Mk4 和 Mk5 版本5.6.0或更高版本以及 Q 版本 1.5.0Q 或更高版本,以及相应的 Edge 版本。Tapsigner、Opendime 和 Satscard 产品使用不同的代码,据报道未受影响。
在生成种子时,如果用户进行了足够多的独立掷骰子操作,就能获得显著的保护,因为自身的随机性足以抵消软件输入的缺陷。Coinkite 表示,至少50次使用公平骰子的私人掷骰子操作就能有效避免此类问题,而更多次的掷骰子操作可以提供更大的安全保障。
一个强大的 BIP-39 密码短语还能创建一个独立的钱包,仅凭助记词无法重建该钱包。多重签名钱包(比特币转移前需要来自多个设备或位置的密钥)在 Coldcard 助记词仅代表签名安排的一部分时,得到了很大程度或完全的保护。
然而,这些安全措施并非强制性的。许多受害者似乎都遵循了当时可获得的标准安全建议:购买信誉良好的硬件钱包,离线生成助记词,保护备份,并且永远不要将其输入到连接互联网的设备上。
Coinkite 首席执行官 Rodolfo Novak(人称 NVK)于7月31日公开道歉,并表示公司对固件故障负全部责任。“我很抱歉,也感到非常难过。我们的团队对昨天的消息感到无比痛心。” Novak 写道。他承认,热修复程序可以保护新创建的种子,但无法修复在存在漏洞的软件下生成的种子。
Novak 解释说,Coinkite 将在核实细节后发布完整的技术报告,并协助受影响的用户向警方报案、提出保险索赔或进行独立调查。他还警告开发者,人工智能(AI)工具现在可以比传统审查流程更快地扫描旧的公开代码,发现其中隐藏的漏洞。
Coinkite 强调,他们只能假设攻击者利用人工智能技术检查了其开源固件,但目前尚无证据表明该漏洞是如何被发现的。该公司还承认,近期使用一款领先的人工智能模型进行的审查未能识别出该问题。多家竞争对手的硬件钱包制造商已在社交媒体上声明,他们的产品不受影响。
在 Coldcard 事件发生后,该公司告诉 X 用户:“Ledger 不受近期发布的 Coldcard Mk3 安全公告的影响。Ledger 设备使用内置于安全元件芯片中的认证真随机数生成器(TRNG),为每个24字的秘密恢复短语生成完整的256位熵。”
攻击者的身份仍然未知,被盗的比特币随时可能从其合并地址转移。调查人员仍在努力确定实际生成了多少个存在漏洞的种子,有多少比特币仍然暴露在外,以及攻击者是否已经识别出其他高价值钱包。然而,Coinkite 可能没有太多关于很久以前所有者的信息。
Casa 联合创始人詹姆森·洛普在X网站上报道说: “Coinkite 为了防止数据泄露,会在120天后清除所有客户记录,这把双刃剑意味着他们无法联系到过去5年购买过存在漏洞的冷卡的客户,也无法警告他们这一漏洞。”
此次事件还将考验 Coinkite 能否重塑用户对 Coldcard 的信心,以及硬件钱包制造商是否会加强对种子生成的独立审核。
对于用户而言,眼下的首要任务更为简单:任何在受影响固件上创建种子且未使用强独立骰子熵、口令或多重签名保护的用户,都应将其视为已泄露,并谨慎地将资金转移到新生成的钱包中。
除了这起令人痛心的盗窃案之外,比特币社区的比特币用户们正在发出警报,并敦促其他人传播这一消息,以免更多易受攻击的钱包被洗劫一空。