Coldcard 固件 5.6.1 强制用户在每个新种子中提供熵,经过 $100M 漏洞

Coinkite,Coldcard背后的公司,已经发布了一个固件更新,该更新在所有者手动提供随机性之前不会生成新的钱包种子。
这意味着至少需要50次掷骰子、128次抛硬币或65次定时按键,在其随机数生成器出现缺陷后,客户资金暴露于攻击者之下,经过三周的时间。
Coldcard的两个设备系列运行不同的固件版本,因此此次发布有两个版本号,Mk4和Mk5为5.6.1,Q型号为1.5.1Q,后者是带有键盘和二维码扫描的大型型号。
启动检查针对缺陷
Coinkite表示,输入是在STM32 TRNG和两个安全元件的设备随机性之上添加的。
Coldcard的设计是仅从其硬件生成器中提取种子熵,但Coinkite追踪到故障是由于构建和链接错误,导致用于禁用软件路径的设置无效,将随机数调用发送到MicroPython的Yasmarang PRNG,该路径在2021年3月进入种子路径。
受影响的种子携带约72位熵,而不是预期的128位,在7月30日从500个地址中清扫了594.5 BTC之后。
固件5.6.1现在在启动时验证随机数调用是否到达预期的硬件路径,如果失败则停止设备。Coinkite用SHA-256 Hash_DRBG替换了Yasmarang,该算法在NIST SP 800-90A中指定,并在启动时用来自两个安全元件的完整256位摘要进行种子初始化,而早期的固件将其截断为32位。
键盘敲击遵循彼得·托德的推按钮随机数生成器设计,以CPU周期分辨率对键盘按压时机进行哈希处理。第一次按压设置了一个参考,随后每64个间隙都被记为两个比特的熵。
旧种子仍需迁移
“安装此更新并不能使现有的易受攻击种子变得安全,”Coinkite写道,指示任何在2021年至2026年7月间可能在受影响固件上生成的种子用户创建替代种子并转移他们的比特币(BTC)。Mk2和Mk3不在此版本之内,它们的最低固定版本保持在4.2.0。
一个被攻破的USB主机可能在所有者批准后重写一个已准备的交易,因此签名覆盖了不同的输出。该设备现在在签名之前重新检查这些字节,并在发现“交易已修改”时停止。
Coinkite的新安全状态页面列出了四个独立的审查,其中包括一个真实设备测试,观察到对32字节种子请求的八次硬件随机数生成读取,以及重建与签名固件的每个字节匹配。
该公司指出,这些检查“并不是对每个固件二进制文件的完整审计。”正如CryptoPotato报道的那样,确认的损失超过1亿美元,银河研究统计了来自大约7,300个地址的1,596 BTC,并且在8月3日,怀疑的第四波浪潮席卷了近449 BTC。
来源:CryptoPotato