🟢 已核实 📰 资讯

五款钱包生成的助记词能被算出来 —— 更新 App 也救不回旧钱包

· ✍️ altrookie 编辑部 · 👁️ 只读文档

安全公司 Coinspect 表示,至少有 569 万美元从加密钱包中被盗,原因是这些钱包的助记词从一开始就不够随机。问题源自五款钱包应用在生成部分助记词时使用了一个有缺陷的随机数生成器。棘手之处在于,弱点存在于助记词本身,所以更新应用并不…


安全公司 Coinspect 表示,至少有 569 万美元从加密钱包中被盗,原因是这些钱包的助记词从一开始就不够随机。问题源自五款钱包应用在生成部分助记词时使用了一个有缺陷的随机数生成器。棘手之处在于,弱点存在于助记词本身,所以更新应用并不能修复已经生成的钱包。

Coinspect 点名的应用包括 RRWallet、Bexo Wallet、NanChat、Bitcoin Libre 和 Milo,它们生成部分助记词时用到了 CryptoJS 库里一个有问题的函数。这段有缺陷的代码早在 2014 年 6 月就被加入,讽刺的是,当初的目的正是为了加强该库的随机性。Coinspect 也提醒,这份名单未必完整,是否受影响取决于当初生成助记词的软件版本,而不只是品牌本身。

助记词是钱包的总备份,一串单词就能重建控制资金的私钥:谁拿到它、谁能把它算出来,谁就能把钱转走。它的全部防御,在于它是从一个大到无法穷举的空间里随机选出的。Coinspect 发现,那个有缺陷的函数把本应有 2^128 或 2^256 种可能的空间,压缩到了大约 2^39 和 2^47 —— 小到攻击者可以逐一枚举,把每个候选推导成区块链地址,再逐个检查哪些地址里有钱。事情正是这样分批发生的:5 月 27 日约 314 万美元,5 月 30 日至 7 月 13 日再被盗 255 万美元,7 月 20 日至 21 日又有约 4 万美元,针对的是用中文词表生成的那部分助记词。这次分析涵盖了 2000 多组助记词,涉及比特币、以太坊、波场(Tron)、Rootstock 与 Polygon,因此这个金额只是下限,而非最终数字。

这些应用后来都修复了新助记词的生成方式 —— Bexo 在 20.1.0 版、NanChat 在 1.3.0 版、Bitcoin Libre 在第 4 版;RRWallet 与 Milo 已停止运营。但这些修复救不了此前用问题生成器产出的助记词,而且把这串词导入另一款软件钱包、甚至硬件钱包,弱点也会跟着一起搬过去。NanChat 已通知在 1.3.0 之前创建钱包的用户,把它们视为已泄露,并迁移到新生成的助记词。Coinspect 还发布了名为 Unlukey 的自查工具,用公开的区块链地址比对其已知受影响数据集,不需要提交任何私密信息;比中意味着可能受影响,比不中则只说明你的地址不在已公开的数据里。

这件事的教训不止适用于这五款应用:一串助记词的强度,取决于生成它的软件和设备。尽量选择有公开安全记录的钱包,在你信得过的设备上生成助记词;如果你实在不确定一串旧助记词的来历,唯一真正有效的补救,是新建一个钱包并把资金转过去。还有一点:无论客服还是网站怎么说,都不要把助记词输入任何地方去做所谓的检测 —— 正规工具只需要你的公开地址。