跨链桥又出事:Anyswap V3 因一个签名漏洞丢了 800 万美元

一个 R 值,暴露了私钥

2026-07-12 12:33

7月10日,一条不太起眼的链上异常,在两天后演变成一起近 800 万美元的盗币事件。北京时间 7月12日凌晨,跨链交易协议 Anyswap 官方确认,其新的多链原型 V3 路由器实际在 7月10日(北京时间 7月11日凌晨)就已遭到攻击,V3 跨链流动性池损失约 239.8 万枚 USDC 与 550.9 万枚 MIM,合计折合约 800 万美元。好在,出事的只有 V3,更早的 V1、V2 版本和那座核心跨链桥都安然无恙。

事情的根子,出在一个「签名」上。Anyswap 的 V3 路由器用一个 MPC 多签账户来授权跨链资金的调动。所谓 MPC,是把一把私钥拆成多份、由多方共同保管,理论上比单点私钥更安全。可偏偏在 BSC 链上,这个 MPC 账户下的两笔交易,用了完全相同的 R 值签名。这在密码学上是个大忌,也是整起事件最致命的那个口子。

为什么一个 R 值就能要命?这得从 ECDSA 签名算法说起。每签一次名,本该配一个一次性的随机数(行话叫 nonce,记作 k),R 值就是由这个随机数算出来的。如果两笔不同的交易用了同一个 R,攻击者拿着这两笔交易的明文和签名,就能反推出那个随机数,进而算出账户的私钥。说白了,一把锁配了两把「能互相推出对方」的钥匙,锁就形同虚设。知道创宇安全团队当时就本地复现了这套推导,确认私钥确实被反解了出来。

拿到私钥后,攻击者以 MPC 的身份直接调用 anySwapInAuto 函数,把池子里的钱一笔笔转走。链上记录显示,被盗资金分散在以太坊、BSC、Fantom 多条链上:光 USDC 就分三笔划走,合计约 239.8 万枚;另有约 550.9 万枚 MIM 稳定币从以太坊一处地址转出。攻击者地址是 0x0aE1554860E51844B61AE20823eF1268C3949f7C,整件事干净利落,像是早就摸清了底。

有意思的是,同一个 MPC 账户在 ETH、BSC、FTM 上能复用,于是多条链上的资产被一锅端。但 V1、V2 的桥接交易此前都经过审计,用的不是这套有问题的签名逻辑,过渡资金安全;跨链桥本身也没被波及。团队说,代码已经修好,杜绝了「相同 R 签名」的再次发生,并请来安全公司 Trail of Bits 一起复盘。V3 路由器会在 48 小时内重启。

对用户来说,最关心的还是钱。Anyswap 明确表态:所有被盗资金都会由项目方全额补偿,V3 的流动性提供者(LP)不会有任何损失。等 V3 跨链资金池重新注入流动性,用户就能照常提款。这笔账,项目方认了。

话说回来,这类「重复 R 值」漏洞其实并不新鲜。2021 年 Anyswap 就栽过一模一样的跟头,当年的损失约 790 万美元,根因也是相同的 R 值签名泄露了 MPC 私钥。五年过去,换了 V3 版本,老毛病又犯,说明跨链协议在签名实现上的坑,远比想象中难填。再把视线拉远一点,跨链桥一直是 DeFi 被盗的重灾区,从 Ronin 到 Wormhole,再到各种小桥,几乎每隔一阵就出事,桥上锁着的往往是一个协议最值钱的那部分钱。

值得警惕的是,光鲜的「跨链叙事」背后,安全常常是最后才被补的课。对普通用户而言,挑跨链工具时,与其只看 TVL 和收益率,不如多留意它有没有经过像 Trail of Bits 这样的硬核审计、签名机制是否经得起推敲。毕竟,桥塌了,卷走的可不止是项目方的脸面,还有你池子里实打实的本金。