莱特币(LTC)开发团队公开了在隐私扩展功能MimbleWimble扩展块(MWEB)实现中发现了一个"致命验证缺陷"。如果利用这个缺陷,攻击者可以制造出一个比实际金额大得多的"pegout",将资金从链中取出,实际上在2026年3月,确实发生了一笔被夸大到85,034.47285734 LTC的pegout。
事后分析报告由莱特币开发者David Burkett于4月28日公开。开发团队表示,通过与矿池的"紧急协作"和分阶段部署补丁,解决了会计不平衡问题,结果确认没有用户资金损失。
核心原因:区块连接过程中遗漏的验证检查……小输入伪装成大额pegout
问题的根源在于将MWEB区块"连接(connect)"到链的路径中遗漏了特定的验证检查。MWEB输入(input)在引用先前MWEB输出(UTXO)的同时,必须附带用于余额和支出验证的元数据,并且这些元数据必须与实际被消费(spend)的UTXO完全一致。
根据报告,在普通的mempool和区块生成路径中存在该验证,但在区块连接路径中完全没有被强制实施。利用这个漏洞,攻击者将一个估计"不超过1.2084693 LTC"的实际输入价值的小输入,附上伪造的承诺数据,制造了规模达85,034.47285734 LTC的pegout,并将其发送到透明地址,然后拆分成3个输出点(outpoint)。不过,这种利用方式需要绕过正常的交易中继和区块构成检查,因此前提是攻击者要么自己直接挖出了区块,要么确保了包含异常MWEB数据的矿工。
通过与矿池的非公开协作阻止进一步扩散……通过冻结和恢复交易恢复平衡
开发团队在确认漏洞已被利用后,立即与主要矿池进行非公开协作,重点阻止了后续攻击区块的生成。在此过程中,莱特币核心 0.21.5 和 0.21.5.1 以"面向矿工"的紧急部署形式发布,0.21.5.1 则对已被接受的利用区块添加了"历史例外",同时暂时拒绝支付攻击者控制的3个透明链输出。
攻击者此后曾试图使用至少一个被冻结的输出,但更新后的矿工拒绝了这一操作。最终,开发团队与攻击者取得联系后,攻击者签署了一份恢复交易,退还了除"850 LTC赏金"之外的金额,其中84,184.47278630 LTC支付至回收地址,850 LTC支付至攻击者地址。报告补充说,Charlie为弥补赏金缺口购买了850 LTC。全部85,034.47285734 LTC在区块高度3,078,098处重新peg-in到MWEB,之后该输出被冻结,旨在恢复MWEB内部供应平衡的同时,防止重新调整的数量进入流通。
4月尝试同一路径导致"变异区块"DoS,产生13个区块的无效链……外部服务也遭损失
第二起事件发生在4月25日的区块高度3,095,931。另一个行为者尝试了相同的利用路径,但更新后的节点拒绝了错误的MWEB数据,在此过程中暴露了独立的"变异(mutated)区块"处理问题,并演变为拒绝服务(DoS)形式。部分序列化的MWEB主体数据可以在不改变莱特币区块哈希的情况下被篡改,更新后的节点通过P2P接收到此类区块时,会在应用过程中失败,将其归类为'BLOCK_MUTATED',并保留对该哈希的不良序列化数据,从而可能干扰后续正常区块的处理以及像submitblock这样的挖矿RPC流程。
最终,未更新或未能充分强制MWEB验证的矿工增加了无效链,直到区块高度3,095,943,总共生成了13个"无效区块",随后更新后的矿工协作使有效链追上,无效链被重组(reorg)。开发团队强调,这并非回滚了有效的莱特币历史,而是移除了"无效链"。然而,外部基础设施受到了打击。报告称,NEAR协议生态的NEAR Intents将11,000 LTC兑换为7.78814476 BTC,后因该笔LTC从有效链中被移除而遭受了"巨大损失";THORChain上也有10 LTC被兑换为0.00719957 BTC,之后因重组导致莱特币侧的交易被无效化。莱特币核心 0.21.5.4 修改了逻辑,删除被归类为"变异区块"的区块的存储数据,以便能够重新接受同一哈希后的正常数据。开发团队再次敦促矿工、交易所和服务提供商升级至 0.21.5.4 及以上版本,并检查同步状态。与此同时,截至发稿时,莱特币(LTC)价格为55.95美元,约合韩元82,812韩元(基于1美元=1480.40韩元汇率)。


