11 月 9 日,Ankr 以太坊侧跨链桥被拿走了三十万美元左右。放在 2026 年的跨链桥盗案里,这个数字属于噪音。手法不是。

攻击者没有破解签名,没有偷热钱包私钥,也没有社工运维。按 SlowMist 的预警:五张提款收据提交到以太坊侧,全部指向同一笔真实的 Optimism 交易,但收款人、币种、金额都被改写。每张收据都带着桥所信任的共识签名者的有效签名,合约的 withdraw 函数没有核对源链上到底发生了什么,就把资产放了出去(SlowMist)。

一笔真存款,五次出门。

目前能确认的事实

可核实的信息来自安全分析方,而不是运营方。

SlowMist 把根因写成验证缺口:伪造收据带着有效签名,withdraw 路径没有确认对应的源链事件。它给出的损失是约 30.45 万美元。

The Defiant 报道的是五笔提款、按计价约 30.36 万美元,并且补了一句最关键的:第一次提款之后几个小时,在美东时间凌晨 3:49 查看时,合约仍然没有暂停(The Defiant)。

更早的一份安全估算把损失放在 29.2 万美元附近。几个数字的差别在计价方式和统计口径,不在发生了什么。

截至写稿,Ankr 没有发布事后报告。公开的技术叙述只有 SlowMist 那一份,这也意味着分币种明细和受影响余额的范围都还不清楚。

锁定-释放型跨链桥,本来该怎么工作

Ankr Bridge 的用途是把 Ankr 的流动性质押代币搬到别的链上,底层质押继续生息。它自己的文档写得很坦率:多数桥用铸造和销毁包装资产,但已经锚定的代币只能走锁定-释放,代价是运营方得自己在两条链之间做流动性再平衡(Ankr 文档)。

这条桥由 Beosin 做过审计。这不是在质疑审计。审计覆盖的是「某个时点的代码,对已知的漏洞类型」,运维凌晨三点会不会按暂停键,不在审计范围里。

锁定-释放型桥的全部安全性,最后都会收缩成一个问题:放款时,合约核对的是源链上的那件事,还是那个传话的人?

核对传话的人更便宜。你信任一个签名者,签名者为存款作证,合约见到证词就付钱。绝大多数时候这套能跑,因为签名者是诚实的软件,转发的是真实事件。失败点不在签名者撒谎,而在释放逻辑接受「这个签名者签过的任何格式正确的陈述」,包括一笔已经兑付过的存款,包括中途被改过细节的陈述。

「伪造收据带着有效签名」,说的就是这件事。

签名能证明的东西,比你以为的少

签名只回答一个问题:这话是谁说的。

它不回答这话是不是真的、是不是第一次说、数字对不对。要回答这些,必须去看另一条链,而看另一条链要花 gas、花延迟、花工程。

同类事故最后都落在同一个缺失的检查上,只是代码写法不同:这笔源链事件被消费过没有?收据上的金额和存款金额相等吗?收款人是不是当初存款的那个地址?币种是不是同一个币种?

这些检查如果放在链下的运营流程里,它的可靠性就等于流程的可靠性。如果放在链上,它的成本是一个 storage slot 加一句 require。2026 年跨链桥的亏空,基本都产生在这两种设计之间的差距里。

还有一个每次都会被搞混的概念值得点明。分析方按「流出的代币」估值,攻击者实际到手的可能更少,因为盗走的资产要卖进流动性;协议承受的损失可能更大,因为同一批抵押在别处还撑着负债。一个数字,三种含义。

没人按下的暂停开关

金额是脚注,响应窗口才是正文。

暂停机制存在的唯一理由,就是让盗案在几分钟内被掐断。写这个功能不难。难的是配人:得有人在看,得有人有权按,得有人在周日凌晨四点能被叫醒。

一笔在区块浏览器上人人可见的盗案,暂停标志几个小时没动,这比审计报告更能说明运维的准备程度。它同时也在告诉下一个攻击者:合约可能不是最薄的那一环。

对用户来说,这个翻译不太体面。你没法审计一支应急响应团队,你只能观察它出事之后的行为,再决定要不要把钱留在一个「失败成本以小时计」的系统里。

持有人该盯什么

盯抵押,不盯价格。如果以太坊侧的抵押不足,它所支撑的代币可能跌破锚定,直到缺口被补上。这才是持有人真正要看的链上后果。

在看到带范围说明的事后报告之前,不要再往这条桥里送资产。「正在调查」这四个字不告诉你哪些余额是完整的。

手上拿着暂时用不上的跨链资产,决策还是每次跨链桥事故都指向的那一个:要么接受运营方风险,并把仓位控制在这个风险之下;要么换到一个抵押问题有公开答案的地方。

如果你是跨链桥的运营方:能挡住这次攻击的检查不新鲜,能挡住它的应急预案也不贵。这两样东西在 2022 年以来的公开复盘里都有现成的写法。反复不落地,是一种选择。

判断一条桥值不值得用,看四个可查的东西

不用读代码,也能查个大概。

第一,放款是不是链上核账。看它的提款交易里,除了验签,有没有对源链状态的读取或证明提交。如果整笔交易只调用了一次签名验证就转账,那信用全压在签名者身上。

第二,同一笔存款能不能被用两次。找一条它的历史提款,看合约是否记录了源链交易的哈希或 nonce。有记账,重放就难;没有,就靠运营方在链下盯。

第三,签名者是几个,谁在管。多签、门槛签名、还是单一地址。单一地址意味着一个人的密钥等于整条桥的额度。

第四,出事多久能停。公告里有没有公开的暂停权限、谁能按、承诺时限是多少。这条最难查,也最值得问,因为技术再稳,处置慢一样会出事。

四个问题里有两个答不出来,就把仓位压到亏光也无所谓的程度。

还没说清的部分

哪些币出了桥、各多少、去了哪些地址。被盗资金有没有移动。暂停有没有补上,漏洞是修了还是只把插头拔了。Ankr 会不会发事故报告,报告里会不会覆盖缺口。

不会变的是那个数字:五。五张收据,一笔存款,一个被信任到足以放款的签名域。

资料来源

常见问题

什么是「伪造收据」攻击?

锁定-释放型跨链桥在一条链上锁资产,在另一条链上凭证明放款。这份证明通常就是签名者或预言机签过的收据。伪造收据攻击不去破解签名,它让桥接受一份对应「已经发生过的、或者被改过细节的」事件的收据并付款。这次攻击者用一笔真实的 Optimism 存款,作为五笔提款的底稿。

签名是真的,收据怎么会是假的?

签名只证明「谁说的」,不证明「说的是真的、是第一次说、数字对不对」。SlowMist 的描述是伪造收据改了收款人、币种和金额,签名却来自桥的共识签名者,withdraw 没有去核对源链事件就放款。当释放逻辑只验签名、不查源链,一个有效签名就变成了写在它旁边那串内容的通行证。

损失到底多少,哪些币被拿走?

口径从早期安全分析的约 29.2 万美元,到链上计价约 30.36 万美元,再到 SlowMist 的 30.45 万美元,差异主要来自计价方式和算了哪些币。Ankr 没有公布分币种明细,任何精确数字都只能当临时值。出问题的是 Ankr Bridge 的以太坊侧,这条桥运的是 ankrETH 这类 Ankr 流动性质押代币。

我的 ankrETH 和质押余额受影响吗?

亏空出在桥合约持有的资产上,不等于所有 Ankr 产品都受影响。是否暴露取决于你的代币是放在桥的锁定抵押里,还是在质押合约里。Ankr 没有公布范围说明,先看官方渠道,别自己猜;在出事后报告之前,也不要再往这条桥里送流动性质押代币。

跨链资产会不会脱锚?

这是要盯的风险。如果以太坊侧的锁定抵押被掏空,代表它的代币可能跌破锚定,直到储备被补上或缺口被 Ankr 兜住。真脱锚的话,那是持有人最清楚的链上信号。金额不大,抵押是不是足额才是大事。

对其他跨链桥有什么教训?

两条几乎不花钱的检查。第一,放款必须核对源链事件本身:这笔存款存在吗、最终确认了吗、是不是已经被消费过。第二,暂停开关要配一个具体的人和一个会响的告警,因为几个小时的无人处置,比六位数的损失更严重。