关于 Unlukey
Unlukey 是一个关于加密货币钱包弱生成漏洞的协作研究项目。
动机
通过对 Ill Bloom、Coldcard 以及其他弱种子生成漏洞的研究,我们意识到 在保护用户免受此类攻击方面,仍有很多可以做的。我们决定尝试解决这个 问题,不仅是因为未来很可能会有新的此类漏洞被利用,也是因为已发现的漏洞 仍有受害者处于风险之中。
提醒受影响的用户
警告因弱恢复短语而生成的钱包的用户是困难的。如果只有单一产品受影响,那 么可以通过厂商的官方渠道联系用户。然而,在 Ill Bloom 这样的案例中,许多 受影响的钱包是由已停产的应用生成的,但其用户后来又将这些易受攻击的 助记词导入了其他应用。随着时间推移,用户可能不再知道最初是哪个软件生成 了自己的恢复短语。
这使得由原始厂商披露漏洞的方式变得不够充分。恢复短语可能在生成它的钱包 消失后仍长期被使用。由于同一短语可能会出现在另一个钱包中,检测和提醒机 制需要在短语当前被使用的任何地方发挥作用,而不仅仅是在它最初被创建的地 方。
共享的检测机制让多个系统能够在漏洞一经确认就提醒受影响的用户。
防御方的优势
对防御方而言,这也带来了时间上的优势。我们观察到,攻击者在一条区块链上 转移了源自某个易受攻击的恢复短语的资金,而与同一短语关联的资金在另一 条区块链上却未被触碰。大规模利用易受攻击的种子需要攻击者生成候选种 子、派生账户,并在多条区块链上搜索资金。这个过程计算成本高昂且耗 时,这就为防御方识别受影响的用户并在攻击者发现所有关联资金之前发出警 告创造了机会。
长期保护
一旦某个恢复短语在生成时熵不足,这种风险就可能持续存在,并影响未来的存 款。没有在最初的协同转移攻击中受害的受影响用户,可能会继续使用存在漏洞 的钱包多年,直到其余额超过攻击者设定的最低门槛,或者新的攻击者以不同的 策略利用同一个漏洞。某些错误,比如直接使用某个平台不安全的随机数生成器 来生成熵,可能会在新的应用中再次发生,也可能在更新某个依赖项时被重新引 入。一个集成在钱包中、并随每一种已知的不安全熵生成方式更新的检测系统, 能够及早发现新的实例,防止造成进一步的损失。