MEV 機械人誤墮蜜罐陷阱損失逾 750 萬美元:手法拆解與資金追蹤

6 月 21 日,以太坊網絡其中一個最活躍的 MEV 機械人 Jaredfromsubway.eth 遭遇精心設計的「蜜罐」攻擊,損失逾 750 萬美元加密資產。以下為 Beosin 安全團隊就攻擊鏈路及被盜資金去向的分析。 一、攻擊鏈路拆解 攻擊方部署一組合約「家族」協同運作: - 協調合約 Coordinator(0xb84db016324e8f2bfdd8dd9c260338aee0a8df52):記錄當前區塊是否處於「武裝」狀態,並在收尾階段輪詢呼叫子合約完成資金提取。 - 觸發合約 Trigger(0x4de8c729a064ff6087cc84a4152969349e4feb98):在同一區塊內偽造交易對狀態,令套利路徑看似可執行。 - 子合約/假代幣合約:偽裝成標準 ERC20,以獲取真實代幣的 approve 授權。 - Hub 合約:支付少量真實盈利,強化 MEV 機械人對「有利可圖」的判斷。 - Ring V2 Pair:偽造的 Uniswap V2 交易對。 - 假中繼代幣合約:用於構建多跳套利路徑,例如 fCAP、fUSDC。 二、核心關鍵:以「授權」做局 鏈上交易顯示,攻擊者以多組誘餌交易引導機械人產生可被利用的授權(allowance): - 大額 USDC:機械人獲利約 36.997120 USDC,但留下 20 USDC 授權未被消耗。 - 大額 USDT:機械人獲利約 37.053440 USDT,但留下 20 USDT 授權未被消耗。 - 大額 WETH:機械人獲利約 0.0179 WETH,但留下 16 WETH 授權未被消耗。 小額交易表現正常:機械人在同一筆交易內完成授權後,子合約即刻以 transferFrom 轉走真實代幣並消耗授權,觀感上與一般 swap 無異,降低疑心。 大額交易則反其道而行:子合約不調用 transferFrom 去取走真實代幣,而是偽造流程、鑄造假代幣交付到交易對。機械人以為已完成 swap 的前置步驟,但真實代幣的授權仍然留在子合約可用狀態。整個攻擊的本質,就是「小單消耗授權、大單保留授權」。 三、攻擊流程(以 USDC 為例) 針對 USDC 的一輪攻擊大致如下: 1)攻擊者呼叫 Coordinator,將當前區塊設為 armed。 2)攻擊者呼叫 Trigger,同步更新多個偽造 Ring V2 交易對狀態。 3)MEV 機械人偵測到套利機會後入場交易。 MEV 機械人的一般交易步驟包括: 1)MEV Bot 合約向某個子合約批出大額 USDC allowance。 2)MEV Bot 呼叫子合約的 wrapTo/wrap 函數。 3)在 armed 狀態下,子合約不消耗真實 USDC,而是向交易對鑄造假代幣,令 USDC 授權得以保留。 4)MEV Bot 繼續在偽造交易對上完成 swap。 5)第二跳交易對將代幣傳回 MEV Bot。 6)Hub 合約向 MEV Bot 支付少量真實 USDC 作為「盈利」。 授權示例交易(tx hash):0x0121e07a916c06eea3e7daf11893f3f0b95b9e1684124545ae14c32aee6029bb MEV Bot 在表面上觀測到「成功套利並獲得真實 USDC 收益」,但關鍵的 USDC 授權仍被子合約保留。 上述流程分別對 USDC、USDT、WETH 重複執行,累積大量可用授權後進入收割階段。 攻擊收割交易(tx hash):0x2be8704f5a59b69e0b71f64aefdb99eb0e8ae9fb3926147c581910d71bcf3e65 攻擊者啟動 Coordinator 的 drain 迴圈,calldata 內包含 66 個子合約地址及 MEV Bot 合約地址。只要 MEV Bot 先前已向相關子合約批出支出授權,子合約即可直接把對應的真實代幣轉走至攻擊者。 最終結果: - 所有 20 USDC 的大額授權已被完全消耗。 - 所有 16 WETH 的大額授權已被完全消耗。 - USDT 尚留部分授權,但因 USDT 餘額不足未能完全提走。 四、資金流向追蹤 攻擊後,攻擊者地址(0x3e37f4A10d771Ba9dE44b6d301410b1BEdeA65d0)共收到約 287 萬美元 USDC、204 萬美元 USDT,以及 1,474 WETH。其後攻擊者把穩定幣兌換成 ETH,並分流至以下四個地址: - 0xe3Da36E4bd1a5738fa5D6Ef4F0e4dF40bDeB5f17(約 1,000 ETH) - 0x74Dc5b93586D248D5Aec64b3586736FF0A0D0e65(1,001 ETH) - 0xd8C125efCBc99408eC8723E9BBd81d1E8D39D845(1,001 ETH) - 0x71d4416A7A85e08a5Fe7227Ca3B44Fc639e94e97(1,423 ETH) 其中 0xe3Da3 已把 1,000 ETH 轉入 Tornado Cash;其餘三個地址暫未見進一步轉出。 五、結論與風險提示 此案反映攻擊者並非直接針對合約代碼漏洞,而是利用 MEV 機械人的業務邏輯:透過構造特定套利場景,誘導機械人在「看似正常且有盈利」的路徑上批出授權,最終在收尾階段把資產一次過轉走。 對套利機械人與 MEV Bot 而言,僅依賴模擬回報評估路徑安全並不足夠,特別是當路徑涉及不熟悉合約、偽造代幣或自訂封裝器(wrapper)時更易中伏。除加強合約與代幣白名單審核外,亦應考慮把「交易後 allowance 是否異常變動」納入強制檢查項目。 查看原文