跨鏈橋又出事: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 這樣的硬核審計、簽名機制是否經得起推敲。畢竟,橋塌了,捲走的可不止是專案方的臉面,還有你池子裡實打實的本金。