Coldcard 硬件钱包漏洞导致 41 分钟内被盗 7000 万美元比特币
- 浏览次数 2525
- 喜欢 0
一名攻击者在 7 月 30 日的 41 分钟内清空了 1,196 个比特币地址,盗取了 1,082.65 BTC,按当时价格计算价值约 7,020 万美元。Galaxy Research 绘制了这次清扫行动的地图,并将其与 Coldcard(加拿大公司 Coinkite 制造的仅支持比特币的硬件钱包)中的一个固件漏洞联系起来。
2021 年 3 月的一个固件集成错误将种子生成路由到了确定性的软件伪随机数生成器(PRNG),而非 STM32 硬件随机数生成器(RNG)。
Block 表示,能够确定或充分约束设备 UID、计时器状态和先前 RNG 调用历史的攻击者,可以在不访问设备的情况下离线重现候选输出流。然后可以通过派生候选种子的地址并与公开区块链数据进行比较来检查这些候选种子。
Coinkite 于 7 月 31 日为所有受影响型号和发布轨道发布了紧急固件,但安装它并不能修复现有的种子。Coinkite 告知种子已暴露的所有者,在打过补丁的固件上生成新种子并转移他们的币。
将旧种子恢复到更新后的固件或其他钱包会将弱点延续下去。目前尚无公开报告重建了受害者的种子并将其与已清空的地址匹配。
Block 将故障追溯到 Coldcard 的生产配置,该配置将 MICROPY_HW_ENABLE_RNG 定义为零,因为 Coinkite 提供自己的硬件 RNG 包装器。libngu 库检查的是该宏是否存在,而非是否已启用,从而将构建绑定到 MicroPython 的 Yasmarang 回退机制。该 MicroPython 回退机制使用芯片的唯一 ID 和计时器寄存器进行初始化,并且在初始化后未收集新的熵。
Coinkite 估计 Mk3 上的有效熵约为 40 位,Mk4、Mk5 和 Q 上约为 72 位,而 12 词 BIP-39 种子的熵为 128 位。Block 没有给出一个实际数字。它设置了低于 240.7 和 273.3 的条件性上限,并警告后者并不等同于 73 位的密码学安全性。它没有公布任何暴力破解基准。
新型号的重置种子增加了候选数量,但 Block 表示实际成本取决于可用的 UID 信息、启动时序、先前的 RNG 调用和派生成本。
暴露程度取决于创建种子时运行的固件,而非当前安装的版本:
- Mk2 和 Mk3:Coinkite 列出了 Mk3 版本 4.0.1 至 4.1.9(在 4.2.0 中修复),且未提及 Mk2。Block 将 Mk2 和 Mk3 的 4.0.0 至 4.1.9 版本均置于易受攻击的路径上。
- Mk4 和 Mk5:5.6.0 之前的任何版本。
- Q:1.5.0Q 之前的任何版本。
- Edge 构建:Mk4 和 Mk5 的 6.6.0X 之前,Q 的 6.6.0QX 之前。
Coinkite 表示,使用至少 50 次公平、独立、私密的掷骰子构建的种子,仅凭此漏洞不会面临风险。如果掷骰子的次数或私密性不确定,Coinkite 建议进行迁移。一个强大且唯一的 BIP-39 口令会创建一个种子词本身无法访问的独立钱包,但该公司仍建议更换种子。
多重签名仅在法定人数并非完全由受影响设备构建时才有帮助。TAPSIGNER、OPENDIME 和 SATSCARD 使用不同的代码库,不受影响。
目前无人指认攻击者身份。绘制了 1,196 个地址清扫行动的 Galaxy 表示,在之前的 30 天内未发现其他具有相同 30 sat/vB、无找零签名的比特币交易。
它警告说,该模式识别的是操作者,而非盗窃行为本身,因为一次清扫"看起来与币主选择转移币的方式相同"。
此次披露是在 Coinspect 于 7 月初发布 Ill Bloom 研究之后进行的,该研究涉及旧版软件钱包中一个单独的弱 PRNG 漏洞,自 5 月以来导致比特币、以太坊、波场、Rootstock 和 Polygon 上的地址被盗超过 500 万美元。
又发现两波攻击,疑似与 Coldcard 相关的损失升至 8,860 万美元
更新:Galaxy Research 此后又识别出两波疑似与 Coldcard 相关的清扫行动,将其观察到的估计值提升至 1,367.05 BTC,价值约 8,860 万美元,涉及 4,585 个地址。
该公司表示,根据交易模式,第 1 波和第 2 波可能由同一操作者实施,但警告不应假设第 3 波涉及同一攻击者。Galaxy 还提醒,其发现基于链上分析,尚未通过计算确认每个已识别地址都是用弱 Coldcard 熵生成的。
Galaxy 表示该活动仍在持续,并已向联邦调查人员、合规公司和网络安全调查人员报告了约 600 个疑似由攻击者控制的地址。