Poketto

凭空多出 4000 枚「比特币」:Liquid 被一个缓存碰撞漏洞掏空

侧链凭证与储备失配的概念示意

配图:AI 生成的概念示意图,非实际账户、交易或资产数量。

TL;DR:9 月 6 日,Blockstream 的比特币侧链 Liquid 因底层软件 Elements 的漏洞,被凭空铸造出约 4000 枚没有储备支撑的 L-BTC,并通过提现通道兑成真实 BTC,价值约 3.2 亿美元。攻击者其后归还约 3400 BTC,仍留下约 600 BTC。截至 10 月 11 日,提现仍然暂停,储备覆盖率约 86%。「白帽」还是「勒索」的争议,目前没有定论。

发生了什么

Liquid 是 Blockstream 运营的比特币侧链,用户把 BTC 锁进联邦托管的储备,换取链上的 1:1 锚定资产 L-BTC。9 月 6 日,有人利用 Elements(Liquid 所基于的开源软件)中的漏洞,造出了约 3998.5 枚没有对应 BTC 的 L-BTC,再走正常的提现流程兑出。联邦储备从约 4205 BTC 一度降到约 197 BTC。

据 Cointelegraph 报道,这次提现经由 SideSwap 的提现授权密钥处理。Liquid 与 SideSwap 都表示,该密钥以及联邦成员的签名密钥并未泄露,问题出在 Elements 软件本身,而不在密钥。

漏洞是怎么回事

安全公司 SlowMist 的分析称,Elements 为了省去昂贵的范围证明(保证保密金额合法)的重复验证,会缓存验证结果。但缓存键由若干长度可变的字段直接拼接而成,没有加长度前缀,不同参数组合就可能得到相同的键,即「缓存碰撞」。攻击者先用两笔铺垫交易污染节点缓存,再让第三笔带有无效证明的交易被当作「已验证通过」,绕过金额检查。以上技术细节来自 SlowMist 经转述的分析,我们未能核对其原始披露。

钱去了哪里

9 月 7 日,链上记录显示约 3400 BTC(约 2.7 亿美元)被转回联邦钱包,约占被提走金额的 85%。JAN3 CEO Samson Mow 称仍有约 598 BTC 未归还。据 Cointelegraph,Blockstream 通过嵌入比特币交易的签名消息与对方沟通;对方自称白帽,表示在漏洞修复、节点全部升级后才会归还大部分资金。

争议点

Ledger CTO Charles Guillemet 质疑「白帽」的说法,认为如果剩余的 BTC 是谈判得来的「奖励」,那更像勒索而非白帽行为。Blockstream 和 Liquid 当时均未公开把这部分称为赏金,也未披露归还条件,部分后续报道对此也有不同说法,这一点仍有争议。

现状

Liquid 已在 9 月 10 日恢复出块和普通转账,L-BTC 可以收发,但提现(peg-out)至今暂停,储备仍短缺约 600 BTC。官方给出的恢复条件包括:所有流通 L-BTC 恢复 1:1 足额支撑、升级 Elements、完成安全审计、调整密钥管理并转向冷存储。Blockstream CEO Adam Back 对利益相关方表示,锚定最终会被补足,但没有给出恢复时间。

来源:

关注这个空间,它的新文章会出现在你的关注动态里。