一场没有私钥泄露的比特币失窃案

2026年9月6日,约4000枚比特币(时值3.2亿美元)从Liquid Network的联邦金库中流出。这并非传统意义上的黑客攻击——没有私钥被盗,没有硬件安全模块被攻破,没有钓鱼邮件,也没有内鬼配合。管理金库的15家机构各自保管的密钥完好无损,每一次签名都是节点主动、合规完成的。

问题究竟出在哪里?

Liquid Network的运作机理

比特币主网的性能瓶颈众所周知:十分钟出块时间、波动的手续费,难以满足交易所和量化机构的高频大额转账需求。

Blockstream推出的Liquid Network是一条比特币侧链,定位为主网旁的"高速通道"。其核心流程如下:

  • 锚入(Peg-in):用户将真实比特币存入联邦金库,获得等额L-BTC存单
  • 流通:L-BTC在侧链上以分钟级速度流转
  • 锚出(Peg-out):注销L-BTC,从金库取回等额真实比特币

理论上,链上L-BTC总量始终等于金库中的真实比特币储备,即1:1锚定。

金库由15家知名机构组成的联邦共同管理,成员涵盖交易所与基础设施服务商。每个节点持有一把密钥,存储于专用HSM中。任何资金动用需至少11把密钥同时签名(11/15多签)。这15个节点同时负责轮流出块与相互验证——它们既是金库保管员,也是链上记账人。

该设计的逻辑是:单点作恶不可行,需同时说服11家独立机构才能盗取资金。从防范内部作恶的角度,这一架构表现良好。

Liquid Network联邦金库架构图

机密交易与范围证明

Liquid的另一显著特性是交易金额保密。

比特币主网每笔转账金额公开可查,这对机构而言意味着大额调仓会被全球围观。Liquid采用机密交易(Confidential Transactions) 技术解决此问题:金额被加密隐藏,链上仅保留数学承诺。

但这带来新挑战:金额不可见时,节点如何验证交易未作弊(如凭空写入负数或制造溢出)?

解决方案是范围证明(Range Proof) :将金额装入不透明信封,同时附上数学证明,使任何人在不打开信封的情况下确信其中数字落在合法区间。节点逐一验证这些证明,确认每笔交易收支平衡,但始终不知具体金额。

这套密码学机制本身可靠,问题出在其性能优化环节。

缓存机制的致命缺陷

验证范围证明的计算开销极大。为防止节点过载,Elements(Liquid使用的开源节点软件,基于比特币核心代码分支)引入了缓存机制:验证过的证明记录结果,再次遇到同一证明时直接放行。

关键问题在于:如何判定"同一证明"?

Elements的索引键由两部分拼接:证明字节 + 加密金额承诺。

遗漏了什么?资产类型与输出脚本(收款方)。

以收银台作比喻:验钞机记录验过的钞票编号,下次同编号直接通过。但它记录编号时只记了水印花纹和面额,未记录钞票币种和收款人。于是同一份"已验证"结论可能被搬运到完全不适用的场景。

Elements缓存机制缺陷示意图

攻击者正是利用此漏洞,且手法极具耐心:据研究者复盘,攻击前约14小时内,他向链上陆续提交68个完全相同的范围证明,反复将"已验证"结论注入各节点缓存。待时机成熟,再将同一证明放入本应被拒绝的上下文提交。

节点查询缓存,判定"已验证,无问题",予以放行。

于是,3996枚无真实比特币支撑的L-BTC被凭空记入账本。由于金额本就被机密交易隐藏,链上观察者无法察觉这笔多出的资金。

35分钟:每一步都合规

北京时间9月6日23:53(15:53:10 UTC),Liquid区块4,050,336打包了这笔伪造交易。

后续每一步都完全符合规则——这正是事件最令人不安之处。

伪造的L-BTC被转入SideSwap(提供peg-out服务的第三方平台)钱包,混入后与正常L-BTC毫无区别。在账本眼中,它们就是真钱。

十几分钟后,一笔4000 L-BTC的peg-out请求提交:注销存单,取走真实比特币。

15个节点开始履职。其HSM执行两项校验:

  1. 提币地址是否在白名单内
  2. 销毁的L-BTC数量是否与申请的比特币数量相符

两项均通过。HSM不会、也无能力追问第三个问题:这些L-BTC最初如何产生?

11把密钥如常签名。约35分钟后,比特币主网确认交易,3996枚真实比特币离开联邦钱包。

Liquid设计过一道紧急保险:正常签名路径失效时,需2/3备份密钥并等待56天才能动用资金。这道保险从未被触发——攻击者根本没走后面,他走的是正门,而正门为他敞开。

多签门槛管理的是"谁能签",无法回答"签的内容是否正确"。 当伪造发生在比签名更底层的层面——节点软件对"什么是真钱"的判断——门槛再高,也只是把一笔错误支出签得更整齐。

发现过程:两套监控系统的分歧

讽刺的是,该漏洞在不同节点间造成分歧:同一区块,部分节点接受,部分拒绝——取决于各自缓存中此前存储的内容。

比特币核心开发者Antoine Poinsot当时公开指出,关键区块"被mempool拒绝、但被Blockstream接受"。

Antoine Poinsot公开评论截图

mempool.space本身是联邦成员之一,其实时审计程序捕捉到一笔-4,019 BTC的异常提取,而Liquid官方面板当时未同步反映该损失——两套监控系统呈现了不同的事实。

随后数据触目惊心:链上流通4,205枚L-BTC,而联邦钱包中的真实比特币在几笔后续提现处理后仅剩197枚,支撑率不足5%。

这里暴露了机密交易的另一面:隐私的代价是可核验性。金额隐藏后,外部无人能实时比对"账本存单总量"与"金库真币余额"。1:1锚定从人人可验证的事实,退化为需要被相信的声明。待其被证伪时,缺口已达3.2亿美元。

比漏洞更严峻的:迟到的补丁

若故事到此为止,这只是一起高水平的密码学攻击。但还有后半段。

缓存缺陷的修复代码早在8月3日就已提交至代码库,标题明确:将范围证明缓存绑定到资产与输出脚本。9月2日,该补丁并入主分支。

而事发时,联邦节点运行的是23.3.3版本——4月13日发布,不含此修复。9月6日案发后不到三小时,补丁被紧急合入发布分支。

需说明:官方并未正式确认本次事件即该缺陷所致,上述对应关系来自外部研究者复盘。但时间线本身已足够说明一个普遍问题:漏洞被修复,与修复代码真正运行在生产环境,是两件事,中间可以相隔五个月。

Casa安全负责人Jameson Lopp还指出另一事实:联邦节点代码库公开记录显示,上一次提交是2024年4月——距事发超过两年。

代码库提交记录截图

3.2亿美元资产,托付给一套两年未经认真维护的软件。这不是密码学的失败,是运维的失败。

"白帽"自称与Blockstream的回应

当晚,收款地址向链上发送OP_RETURN消息:

we are whitehats. contact us on chain.

谈判随之启动。9月7日,对方归还3400枚比特币(约2.72亿美元,占85%),自留598.5枚(约4700万美元)。

起初双方私下沟通,Blockstream以加密并PGP签名消息回复。但9月8日至9日,对方将喊话搬至公开链上明文,语气转变:

  • 指责失职:"你们只拿出150万美元(甚至可能为0)保护50亿美元资产,这是对安全的公然漠视"
  • 提出条件:要求Blockstream从自有资金另付相当于10%的漏洞赏金,作为归还剩余部分的前提
  • 发出威胁:若拒绝,将让"所有持有人为你的不负责和吝啬承担15%的损失"

至此,"白帽"自称已难成立。Ledger首席技术官Charles Guillemet评价直接:真正的白帽会在动用抵押资产之前披露漏洞,而非之后;先搬空95%储备再谈条件,"更像勒索,而非安全研究"。

对照历史:Nomad、SafeMoon、Team Finance等案例均出现"归还大部分、留一笔赏金"的结局,但通常有明确赏金安排,比例多在10%左右。本次特殊之处在于:15%是单方面留下的,"价格"由谁定,从头到尾没有答案。

随后,Blockstream公开拒绝。

公开声明表示不会为归还被盗资金支付赎金,措辞毫无余地:未经授权取走资产、拒绝归还,是犯罪,不是负责任的漏洞披露,也不是白帽行为——"这是盗窃"。

声明承认此前本着善意沟通,目的是争取用户资金回归、保护比特币社区,但强调不应被误读为接受对方行为或所提条件。同时明确拒绝开创先例:为比特币社区福祉开发的开源软件,其开发者不应被迫支付"远超其经济参与程度"的赎金。

针对"让持有人承担15%损失"的威胁,声明回应是一句立场宣言——比特币是硬通货,不能无成本铸造,比特币不会为支付赎金而对用户减记。

声明最后给出两条路:现在归还,事情仍可回到白帽标准处理;若不还,Blockstream将动用一切合法手段,与执法机构、交易所、服务提供商、链上取证专家合作,追踪、追回资产并锁定责任人。并提醒加密世界常识:比特币设计本身透明,"交易不会消失,留下的证据也不会"。

为何此事比4700万美元更重要

过去几年,"先拿走、再谈条件"逐渐固化为半标准化剧本:攻击者搬空资金,自称白帽,留下自定"赏金",项目方为尽快止损而接受。这套剧本的实质是——一次安全事故的定价权,落在攻击者手中:归还比例、留存额度、谈判节奏,全由对方决定。

Blockstream此次拒绝的,与其说是那笔钱,不如说是这套剧本。代价可能是4700万美元无法追回;换来的是不为下一次攻击背书定价。判断对错需看后续追查结果,但至少将一个长期含糊的问题摊开:被攻击方愿意善意沟通,与被攻击方接受条件,是两件完全不同的事。

另有一细节:事发前三天恰有一款被评价为"首个能独立发现未知漏洞"的AI模型发布,社群曾出现将两件事联系的猜测——迄今无证据支持。但值得留意的是,Blockstream声明主动提及AI:"AI的进步让世界变得不同,而比特币社区已全力应对这一威胁。"

官方未说本次攻击用了AI。但一家刚损失3.2亿美元的公司,在事故声明中将AI写入威胁背景,本身已说明行业判断:发现深层漏洞的成本正在下降,而修补与部署的速度并未同步加快。 那个躺了五个月的补丁,就是这句话最具体的注脚。

当前状况

Liquid已于9月10日12:26 UTC恢复出块,但暂不打包用户交易;peg-in与peg-out仍暂停。官方给出三阶段恢复路径:先恢复出块,再重放已验证交易,最后在网络状态确认无误后重开锚定操作。

3400枚比特币归还后,L-BTC支撑率回到约86%。Blockstream联合创始人Adam Back公开表示,1:1的LBTC锚定将被兜住,并劝持有人不要在场外恐慌抛售。

随着Blockstream公开拒付,剩余598.5枚比特币已从谈判问题变为追查问题——链上取证、交易所协查、执法介入,周期以月甚至年计,结果高度不确定。

这也让"1:1会被兜住"的含义清晰:缺口由Blockstream与联邦自身资产负债表承担,而非让持币人按比例减记。这正是声明中"比特币不会为支付赎金而对用户减记"的落点。对L-BTC持有者而言,这意味着眼下是数日至数周的流动性冻结,而非本金损失——前提是该兜底承诺被完整执行。这一"前提"应由持有人自行评估。

机构投资者的昂贵教训

这起事件无需密码学知识也能读出以下结论:

1. 包装资产不等于原资产

L-BTC、各类跨链BTC、封装代币,均非原生资产本身,而是存单。其安全性等于三层中最弱一环:发行方可信度、节点软件实现质量、出入金通道真假分辨能力。本次出问题在第二层,承接坏钱的是第三层——SideSwap全程无过错,只是无从分辨。多数人评估风险时仅看第一层。

封装资产风险层次图

2. 可验证性优先于隐私

隐私是真实需求,但当储备可核验性被牺牲,就失去了在事故扩大前发现它的能力。本次缺口能被抓住,靠的是不同节点意外给出不同答案,而非任何设计好的核验机制。

3. 风险包含他人的运维节奏

补丁躺了五个月未上线、代码两年无人维护——这些不写入白皮书,但决定资金安全。评估协议时,除设计文档外,也应查看代码提交记录与版本发布纪律。

4. 多签防坏人,不防坏代码

11/15在密钥被盗场景下是好防线;在软件把假钱认成真钱时毫无作用,甚至让错误支出显得格外规范、合法。

5. "白帽"是行为标准,非自称身份

区别不在最后还了多少,而在顺序:先披露再协作,还是先搬空再开价。Blockstream宁可冒4700万美元收不回的风险也要公开拒付,给行业留下的正是这条界线。它未必能追回钱,但至少让下一个攻击者无法确定"自称白帽"还能否换到免罪券。

Cactus Custody作为托管服务商,本次事件最警醒之处不是漏洞本身,而是暴露了三个可提前管理的动作:

  • 资产准入:不能只审发行方,铸造逻辑、赎回通道、储备可核验程度须一并评估;缺乏独立核验手段的资产应单独归类、单独设限
  • 数据源交叉验证:任何依赖单一数据源的入账确认都脆弱,关键链上状态值得用两家独立节点服务商交叉验证——本次缺口恰是被"两个节点给出不同答案"抓住
  • 地址隔离与定期对账:用户资产按地址隔离存放并定期对账,能将判断失误的爆炸半径限制在可承受范围

安全这件事,最终不是比谁的锁更结实,而是比谁需要相信的对象更少。


市场资讯部点评:

Liquid Network此次事件本质是运维滞后与架构缺陷的叠加:修复补丁在代码库沉淀五个月而未部署,联邦节点软件两年未更新,最终导致多签机制在底层验证失效时形同虚设。更值得关注的是,Blockstream公开拒付赎金的选择,实质上是对"先盗后谈"行业潜规则的正面挑战——将安全事故定价权从攻击者手中夺回。对机构投资者而言,此案再次印证:包装资产的真实风险不在发行方信用,而在节点实现层的代码质量与运维纪律。可验证性优先于隐私,应成为机构配置链上资产的核心原则。