MilkSad:bx 种子漏洞(CVE-2023-39910)

研究 · 漏洞

MilkSad:bx 种子漏洞(CVE-2023-39910)

使用 libbitcoin-explorer 的bx seed命令生成的钱包,其熵值来源于时钟,而非真正的随机数——这使得这些钱包具有可预测性,同时也使其合法所有者能够恢复这些钱包。

更新于2026年7月 · KeychainX — 自2017年起提供钱包恢复服务

MilkSad(编号为 CVE-2023-39910)是加密货币历史上最明显的弱随机性缺陷之一。它影响那些使用 libbitcoin-explorer 中的bx seed命令生成的种子所创建的钱包。该名称源自最弱种子对应的助记词,其开头为“milk sad…”。本页将解释该漏洞,并说明受影响钱包持有者应如何进行恢复。

什么是 MilkSad 漏洞

要创建钱包,需要真正的随机性。而bx 种子工具却使用系统时间(以秒为单位)——一个 32 位值——作为梅森扭转器伪随机数生成器(MT19937)的种子。这导致整个密钥空间被大幅压缩:可选种子数量从天文数字般的数量骤减至仅约 40 亿个,而实际上远少于此,因为创建时间通常可在某个时间窗口内确定。 任何大致知道钱包创建时间的人,都能重新生成当时生成的确切种子。

哪些人会受到影响

任何种子熵源自bx seed的钱包都会受到影响,这一问题贯穿了该工具存在该缺陷的整个时期(大致为 2011 年至 2023 年)。这包括直接使用 libbitcoin-explorer 的用户,以及(尤为重要的是)任何曾按照教程或脚本操作、而这些教程或脚本在后台调用了bx seed来生成助记词的用户。 如果您的 BIP39 助记词是以这种方式生成的,那么它从一开始就不具备安全性——该助记词属于一个可穷举的小集合。

为什么时间种子会致命

梅森扭转器(Mersenne Twister)是一种确定性算法:相同的种子总能生成相同的流。因此,种子值是唯一的秘密,而此处的种子值仅仅是一个时间戳。重构钱包的过程如下:遍历合理创建时间窗口内的候选秒数,将每个秒数通过相同的 MT19937 算法处理以生成相同的熵,由此推导出相应的助记词和地址,并将其与已知的地址进行比对。 由于一天只有 86,400 秒,一年约 3,100 万秒,因此在普通硬件上搜索很快就能完成。这与 Randstorm 属于同一类故障——可预测的随机性——只是发生在不同的工具上。

对业主而言,理赔流程是怎样的

正是这种可预测性,既使MilkSad具有危险性,同时也让受影响的钱包能够被其合法所有者找回。如果您曾使用受影响的工具创建过钱包,随后遗失了助记词,我们可以为您重新生成:只需提供大致的创建日期和该钱包的一个已知地址,我们便会遍历MT19937派生规则中的时间戳范围,直到地址匹配为止,从而重建精确的种子。 我们仅对您拥有且能证明与之存在关联的钱包提供此服务——我们的目的是将资金归还给所有者,而非助长盗窃行为。

如果您认为自己受到了影响

如果您的钱包可能是使用bx 种子或基于该种子构建的工具生成的,且其中仍存有资金,请将其视为已遭入侵:请尽快将资金转移到使用真正随机的种子生成的全新钱包中,因为其他人同样可以重新生成旧钱包。如果您已经无法访问该钱包,正因为存在这一漏洞,恢复才成为可能——攻击者会使用的正是将您的代币归还给您的方法。

风险有多大

种子空间仅有40亿种的可能性,意味着任何运行穷举攻击的人都能批量清空受影响的钱包——而确实有部分钱包遭到了清空。由于该漏洞存在于一款广泛使用的命令行工具中,因此风险通过所有调用该工具来“生成安全种子”的脚本、教程和下游项目得以扩散。 这就是弱随机性漏洞的隐蔽危险:它不会主动显露,钱包看起来一切正常,助记词也与其他十二个单词的组合无异,直到有人对种子空间进行穷举搜索,这一弱点才会暴露。对于钱包所有者而言,实际的教训是余额可能随时消失,因此应立即将受影响的钱包中的资产转入一个全新的钱包。

MilkSad 并非孤立的错误;它属于一类失败案例,即钱包的随机性源自可预测的因素——时钟、浏览器的怪癖,或是存在缺陷的平台生成器。Randstorm 导致早期浏览器钱包的熵值崩溃;2013 年 Android SecureRandom 漏洞通过重复的签名非ce值泄露了密钥;2014 年以太坊预售生成器在其部分流程中依赖了浏览器的 Math.random 函数。 这些案例的共同点在于:加密算法本身是可靠的,但种子却存在缺陷;而且在每种情况下,正是这种既导致盗窃又使合法所有者能够恢复资产的可预测性。这是我们研究的核心线索之一,因为早期“丢失”的加密资产中,很大一部分实际上只是随机性较弱的加密资产,正等待着被重建。

信息披露与我们的工作

MilkSad 于 2023 年由发布 milksad.info 安全通告的安全研究人员公开披露,并被分配了 CVE-2023-39910 编号;该漏洞的发现归功于他们。 KeychainX 的贡献主要体现在恢复方面:作为我们在弱随机性恢复领域更广泛工作的一部分(关于密切相关的浏览器钱包案例,请参阅我们的Randstorm研究),我们已针对受影响的钱包构建并运行了时间种子重建程序,以协助其所有者恢复资金。完整的技术披露请参阅原始安全公告。

常见问题

什么是MilkSad?

libbitcoin-explorer 的 bx seed 命令中存在一个弱熵漏洞(CVE-2023-39910),该命令使用 32 位系统时间对 Mersenne Twister 进行初始化,导致生成的种子可预测且可枚举。

我的钱包会受到影响吗?

如果您的种子是通过 bx seed 生成的,或者使用了该工具/教程生成的,那么答案是肯定的。该助记词从一开始就不具备安全性;请将资金转移到一个使用真正随机种子生成的钱包中。

如果我丢失了助记词,MilkSad 钱包还能恢复吗?

对于所有者来说,通常是的。只要知道大致的生成日期和一个已知地址,我们就会通过在同一派生路径中遍历时间戳范围,直到地址匹配为止,从而重新生成种子。

是谁发现了MilkSad?

发布 milksad.info 安全通告的研究人员于 2023 年披露了该漏洞(CVE-2023-39910)。KeychainX 负责为受影响的用户提供数据恢复服务。

康复治疗需要多少钱?

按成功结果付费:仅在成功找回钱包的情况下,按找回金额的一定比例收取费用,且无需预付任何费用。

这个钱包是用劣质工具做的吗?

如果您的种子可能来自BX Seed,且您已无法访问该钱包,那么该种子很可能可以恢复。请告知我们钱包地址及大致时间——我们将在24小时内给出客观评估。

联系 KeychainX →