簡單來說,攻擊者用了一段時間在鏈上公開準備,然後用一次 EIP-7702 委託把幣安熱錢包 Binance 14 變成自己的合約,凌晨開始清掃。到天亮時,與幣安熱錢包相關的地址流出約 56.43 億美元,跨以太坊、比特幣、波場和多條 L2;Tether、Circle、Ripple、World Liberty 等發行方聯手凍結約 25.4 億美元,約佔流出的 45%。而截至目前,那筆惡意委託仍然沒有撤銷。
幣安目前官方的口徑始終是,正在調查潛在安全問題、用戶資金完全安全。
以太坊:35.28 億美元
比特幣:14.49 億美元
波場:6.28 億美元
Arbitrum + Optimism + Base:合計約 3,800 萬美元
Tether 約 15.67 億 USDT、Circle 約 8.23 億 USDC(兩者合計 23.16 億),加上 Ripple 約 2 億 RLUSD、World Liberty Financial 約 2,780 萬 USD1 + 200 萬 WLFI,湊成 25.4 億。
10 月 28 日起:攻擊者發起地址 0x7C86…5CA0 陸續收到 3 筆約 0.1 ETH 的 Tornado Cash 出金,專門用來支付 Gas。這個地址此前和幣安沒有任何關係。
10 月 29 日 10:29: 部署第一個清掃合約 0x19be…f2bf。後面被棄用了。
10 月 29 日 21:51: 向兩個測試錢包寫入 EIP-7702 委託。這兩個錢包都不是幣安的,是攻擊者自己找來的外部錢包。
10 月 29 日 22:20 和 22:24: 第 1、2 次演練,調用清掃把這兩個測試錢包掏空。第一次可能出了點問題,四分鐘後又來了一次。
10 月 29 日 23:59: 部署修正版合約 0x63e8…6fAe。最終在幣安身上生效
10 月 30 日 00:21 至 00:30: 第 3 次演練,換第三個錢包,兩次委託加一次清掃。
之後靜默 3 小時 51 分。直到動手。
04:21:00: 提交 EIP-7702 類型交易,把 0x63e8…6fAe 的程式碼委託給 Binance 14,地址是 0x28C6…1d60。同一筆交易裡塞了 50 個授權,只有 1 個命中 nonce。
04:24:23: 主清掃發生。Binance 14 自己發起調用,向 0x5227…2f8c 轉出 167,464 ETH 加 63 種代幣,其中含約 16.15 億 USDT。手續費 0.0004 ETH,不到 1 美元。
04:24:47: Binance 16 向同一地址追加 28,005.6 ETH,幾乎是無縫銜接。
04:30 至 04:33: 開始拆分 USDT,5 億發往 0x9749…C762,2 億發往 0x0Ddf…697e。
04:38: 195,460 ETH 一次性轉入 0x8532…43D4。這是單筆最大的一次搬運。
04:41 和 04:59: 攻擊者在 Binance 14 上調用另一個函數 0x043ff9d2;同一分鐘,Hot Wallet 34 分別轉出 7.8 億 和 4,300 萬 USDC。攻擊者借用了 Binance 14 對該合約的權限。
05:04: 又一次清掃,掃走 1,699.92 ETH。
05:22 至 06:02: 化整為零。RLUSD 8,850 萬、UNI 702 萬、PEPE 7.77 萬億、wBETH 29,934、ENA 2.175 億,逐個發往全新地址,每個地址事先打入 0.5 到 1 ETH 做 Gas。
05:44: 在這個過程裡,Binance 14 上又成功清掃了一次,掃掉剛進賬的新存款。
從委託到第一次清掃,只隔了 3 分 24 秒。但幣安的風控系統沒有任何攔截動作。
隨後從 5 點開始,幣安和各項目方開始凍結資產,Tether 約 15.67 億 USDT、Circle 約 8.23 億 USDC(兩者合計 23.16 億),加上 Ripple 約 2 億 RLUSD、World Liberty Financial 約 2,780 萬 USD1 + 200 萬 WLFI,湊成 25.4 億。
EIP-7702 是以太坊 Pectra 升級引入的能力:讓一個普通錢包(EOA)臨時租用一份智能合約的代碼。錢包主人簽一份授權,從此對這個地址的任何調用,執行的都是那份外來代碼。
攻擊者的用法是:
部署合約 0x63e8…6fAe,裡面只有一個函數 sweep(address pool, address[] depositors)——把 ETH 和指定的一串代幣全部轉到指定地址。
拿到 Binance 14 的授權簽名,把這份代碼「裝」到幣安熱錢包上。
安裝完 3 分 24 秒後,直接在幣安熱錢包地址上調用清掃合約。
所以,外界看起來就是幣安的熱錢包自己把錢轉了出去。鏈上看不到任何「外部地址轉走資產」的動作,看起來就像 Binance 14 在做一筆正常的出賬。
攻擊者並不知道 Binance 14 的實時 nonce(那個錢包仍在持續發交易)。於是他在一筆交易裡塞了 50 個授權,nonce 從 N 排到 N+49,賭其中一個能命中。結果只有一個生效。
歡迎加入律動 BlockBeats 官方社群:
Telegram 訂閱群:https://t.me/theblockbeats
Telegram 交流群:https://t.me/BlockBeats_App
Twitter 官方帳號:https://twitter.com/BlockBeatsAsia