超過 750 萬美元在 MEV 机器人蜜罐攻擊中損失:分析與資金追蹤

icon MarsBit
分享
AI summary icon精華摘要

6月21日,以太坊網絡上最活躍的MEV Bot之一 Jaredfromsubway.eth 遭遇了一次精心設計的「蜜罐攻擊」(honeypot attack),損失超過750萬美元的加密資產。以下是Beosin安全團隊對此次攻擊的分析與盜取資金流向追蹤。

攻擊流程分析

攻擊合約族

- 協調器合約(0xb84db016324e8f2bfdd8dd9c260338aee0a8df52):負責記錄當前區塊是否處於 armed 狀態,並在最終階段循環調用子合約提取資金。 - 觸發器合約(0x4de8c729a064ff6087cc84a4152969349e4feb98):負責在同一區塊內設置偽造的交易對狀態,使套利路徑看起來可執行。 - 子合約/假代幣合約:偽裝成正常的 ERC-20 代幣,用於獲得真實的授權。 - Hub 合約:負責支付少量真實收益,讓 MEV Bot 覺得有利可圖。 - Ring V2 pair:偽造的 Uniswap v2 交易對。 - 假中間代幣合約:用於構造多跳套利路徑,如 fCAP、fUSDC。

攻擊的關鍵:誘騙授權

透過分析鏈上交易,攻擊者構造了多組誘餌交易:

- 大額 USDC:機器人盈利約 36.997120 USDC,但留下 20 個 USDC 授權。 - 大額 USDT:機器人盈利約 37.053440 USDT,但留下 20 個 USDT 授權。 - 大額 WETH:機器人盈利約 0.0179 WETH,但留下 16 個 WETH 授權。 - 小額交易則表現正常,授權在同一交易內被消耗,用以降低懷疑。

在小額交易中,機器人授權真實代幣額度後,子合約會立即把真實代幣轉走,授權被消耗,看起來完全正常。

而在大額交易中,子合約並不會調用 transferFrom 轉移真實的代幣,而是直接通過偽造交易對鑄造假的代幣。機器人以為自己完成了正常的 swap 前置步驟,但真實的代幣授權仍然被保留。

這就是整個攻擊的核心:小額交易正常消耗授權,大額交易保留授權。

攻擊流程

以針對 USDC 的攻擊交易為例:

(1)攻擊者調用協調器,將當前區塊設為 armed (2)攻擊者調用觸發器,更新多個偽造 Ring V2 pair 的狀態 (3)MEV Bot 發現套利機會並執行交易

MEV Bot 的交易內部流程大致如下:

(1)MEV Bot 合約向某個子合約授權了大額的 USDC 額度 (2)MEV Bot 呼叫子合約的 wrapTo/wrap 函數 (3)子合約因當前狀態為 armed,不消耗真實 USDC,而是向 pair 銘造假代幣,USDC 授權被保留 (4)MEV Bot 繼續呼叫偽造 pair 的 swap (5)第二跳 pair 將代幣發送給 MEV Bot (6)hub 合約向 MEV Bot 支付少量真實 USDC 利潤

圖片

批准範例

tx hash: 0x0121e07a916c06eea3e7daf11893f3f0b95b9e1684124545ae14c32aee6029bb

MEV Bot 看到的結果:一筆成功的套利交易,獲得了真實的 USDC 利潤。但 USDC 的授權被子合約保留了下來。此類流程分別針對 USDC、USDT、WETH 重複執行,最終形成大量授權。

攻擊交易哈希為:

0x2be8704f5a59b69e0b71f64aefdb99eb0e8ae9fb3926147c581910d71bcf3e65

攻擊者調用協調器合約的 drain loop,calldata 中包含 66 個子合約地址,以及 MEV Bot 合約地址。只要 MEV Bot 合約此前給子合約留下了額度授權,子合約就可以直接把對應真實代幣轉給攻擊者。

最終結果:

- 20 個 USDC 大額授權已全部消耗 - 16 個 WETH 大額授權已全部消耗 - USDT 的部分授權額度仍存在,但 USDT 餘額不足

Fund Flow Analysis

攻擊得手後,攻擊者地址(0x3e37f4A10d771Ba9dE44b6d301410b1BEdeA65d0)收到 $2.87M USDC、$2.04M USDT 和 1,474 WETH。隨後攻擊者將穩定幣兌換成 ETH 並轉移至以下 4 個地址:

- 0xe3Da36E4bd1a5738fa5D6Ef4F0e4dF40bDeB5f17(約 1,000 ETH) - 0x74Dc5b93586D248D5Aec64b3586736FF0A0D0e65(1,001 ETH) - 0xd8C125efCBc99408eC8723E9BBd81d1E8D39D845(1,001 ETH) - 0x71d4416A7A85e08a5Fe7227Ca3B44Fc639e94e97(1,423 ETH)

其中 0xe3Da3 已轉移 1,000 個 ETH 至 Tornado Cash,其他三個地址的 ETH 未有進一步的轉移。其資金流向圖如下所示:

圖片

結語

此次攻擊展示了一種高度精密的攻擊方式:攻擊者並未直接攻擊合約代碼,而是根據 MEV Bot 的業務邏輯,構造相應的套利情境,從而誤導 MEV Bot 執行看似無問題的授權,最終轉移其資產。對於套利機器人和 MEV Bot 而言,不能僅依賴模擬收益來判斷路線安全,尤其當套利路徑中存在陌生合約、偽造 token 或自定義 wrapper 時,應保持謹慎,並考慮對交易後的 allowance 變化進行強制檢查。

查看原文

免責聲明:本頁面資訊可能來自第三方,不一定反映KuCoin的觀點或意見。本內容僅供一般參考之用,不構成任何形式的陳述或保證,也不應被解釋為財務或投資建議。 KuCoin 對任何錯誤或遺漏,或因使用該資訊而導致的任何結果不承擔任何責任。 虛擬資產投資可能存在風險。請您根據自身的財務狀況仔細評估產品的風險以及您的風險承受能力。如需了解更多信息,請參閱我們的使用條款風險披露