Back to Blog

透過利用 Flashbots Relay 漏洞捕獲 MEV 機器人

Code Auditing
February 6, 2024
7 min read

2023 年 4 月,一名攻擊者利用 Flashbots 中繼器(Relay)中存在的漏洞攻擊了多個 MEV 機器人,獲利約 2,000 萬美元。此攻擊的根本原因在於,私人交易在特定條件下可能會洩漏到公共交易池中,而攻擊者可以透過「搶跑」(backrun)洩漏的交易來獲利。我們還注意到攻擊中使用了幾種精密技術,例如使用蜜罐(honeypot)交易來攻擊受害者,以及在攻擊合約中加入自我保護機制。

背景

Flashbots

正如其官網所述,Flashbots 是一個「研究與開發組織,旨在減輕最大可提取價值(MEV)對狀態區塊鏈造成的負面外部性,並以以太坊作為起點」。Flashbots 涉及多個不同的實體,包括搜尋者(searchers)、建構者(builders)和中繼器(relays)。下圖展示了它們之間的關係。

圖片來源:Flashbots 文件

PBS(提議者-建構者分離)協議允許區塊提議者將其區塊空間出售給多個建構者(因為他們被選中來建構區塊),以最大化利潤。具體來說,多個搜尋者監聽內存池(mempool)中的交易並產生交易包(bundles),隨後提交給建構者。建構者聚合來自搜尋者的交易包,建立最有價值的區塊,然後將其提交給中繼器。中繼器將區塊提交給區塊提議者,即已被選中為某個 epoch 間隙(slot)建構區塊的驗證者。

在這種架構下,中繼器是建構者和提議者雙方信賴的一方,而這兩者之間互不信任。它確保提議者在簽署區塊標頭之前無法取得區塊內容,並確保提議者能獲得相應的費用。

建議讀者參考 Flashbots 文件以了解詳細架構。我們只需要記住中繼器必須提供的安全保證:如果區塊尚未上鏈,中繼器不得向提議者洩露區塊內容。否則,惡意的提議者可能會利用洩露的區塊內容來獲利(如本次攻擊所示)。

三明治攻擊(Sandwich Attack)

三明治攻擊是指攻擊者將一筆交易置於目標交易的前後,藉此獲利。我們透過一個例子來說明。

假設有一個擁有 WETH 和 USDC 兩種代幣的去中心化交易所(DEX)池。一位用戶提交了一個將 WETH 兌換為 USDC 的請求。該交換交易將進入內存池並被 MEV 機器人(例如一個搜尋者)獲取。隨後,機器人會發出兩筆交易,一筆在用戶的交換交易之前,另一筆在之後。

具體來說,機器人的第一筆交易是使用 WETH 兌換 USDC,這會推高 USDC 的價格。接著,用戶的交換交易隨之執行(由於第一筆交易導致 USDC 價格上漲,用戶獲得的 USDC 會變少)。之後,機器人的第二筆交易將 USDC 換回 WETH,這能比機器人的第一筆交易換回更多的 WETH。

圖片來源:Liyi Zhou 等人的論文《去中心化鏈上交易所的高頻交易》。

搶跑(Backrunning)

搶跑是一種在大額交易後立即執行交易的策略。搶跑主要利用大額交易對代幣價格產生的影響所帶來的套利機會。例如,如果用戶在 DEX 池中進行了大額兌換(將 WETH 換為 USDC),這可能導致 USDC 在該交易所的價格高於其他交易所。搶跑機器人可以立即捕捉到這個套利機會,以較低的價格將 USDC 換回 WETH 以獲取更多 WETH,然後再將 WETH 賣到其他 DEX 池中賺取利潤。

漏洞

正如事故分析報告中所述,該漏洞存在於中繼器的代碼中。即使簽署的區塊標頭無效(簽名本身是有效的),它也會將建構者的區塊內容洩露給(惡意的)提議者。在這種情況下,提交給信標鏈的無效區塊標頭和區塊內容將被拒絕,而提議者可以搶先提交自己的區塊,並利用洩露的區塊內容獲利。

攻擊過程

攻擊者是惡意的提議者,受害者是打算進行三明治交易的 MEV 機器人。

讓我們以一筆真實的攻擊交易為例。

區塊 16964664
位置 0 受害者交易:0xd2edf726fd3a7f179c | Phalcon Explorer (blocksec.com) MEV 機器人使用 2454.1 WETH 兌換 4.5 STG
位置 1 攻擊交易:0x4b2a2d03b3dc136ef9 | Phalcon Explorer (blocksec.com) 攻擊者使用 158 STG 兌換 2454.1 WETH

受害交易和攻擊交易分別位於區塊 16964664 的位置 0 和 1。基本上,受害者(MEV 機器人)進行了一筆大額交易,在 Uniswap WETH-STG 池中使用 2454.1 WETH 兌換 4.5 STG。這製造了一個巨大的套利機會,攻擊者隨後使用 158 STG 抽乾了池中的所有 WETH。

問題是,為什麼受害者(MEV 機器人)願意在池中使用 2,454 WETH(價值約 500 萬美元)去兌換僅 4.5 個 STG 代幣(價值約 3 美元)?請注意,當受害者執行此交換時,該池中的流動性非常低(0.005 WETH 和 4.5 STG)。

我們的分析顯示,有兩個原因促使 MEV 機器人執行如此荒謬的交換:

首先,攻擊者使用了一筆蜜罐交易來引誘受害者發送這筆交換交易,從而進行三明治攻擊。該蜜罐交易的雜湊值為 0xd534c46ba5a444e886 | Phalcon Explorer (blocksec.com)。具體來說,攻擊者在 16964664 區塊之前廣播了一筆將 WETH 兌換為 STG 的交易。由於池中流動性極低,這為 MEV 機器人製造了一個進行三明治攻擊的機會。如下圖所示,MEV 機器人可以建立一個包含三筆交易的三明治攻擊包。

其次,MEV 機器人使用了一種貪婪的三明治策略,並利用 Flashbots 發送此交易。為了最大化利潤,交易包中的第一筆交易試圖抽乾幾乎所有的 STG 代幣(使用 2,454 WETH)。這是一種非常貪婪的策略,用了 500 萬美元(2,454 WETH)僅為了獲得約 700 美元(0.35 WETH)的利潤——比例高達 7,000:1。該機器人預設除非交易被提交上鏈,否則不會被公之於眾。然而,由於中繼器的漏洞,這一假設被打破了。利用這一點,攻擊者建立了一個新的交易包,其中包含了機器人原本的三明治攻擊交易,並增加了一筆搶跑交易來奪取那 2,454 WETH。

BlockSec Twitter 上的圖表展示了整個攻擊過程。

自我保護機制

我們知道攻擊者發送蜜罐交易,透過將 WETH 兌換為 STG 來引誘受害者。但是,如果沒有三明治交易來利用這個蜜罐交易怎麼辦?在這種情況下,攻擊者會監控池的狀態並執行反向兌換,以保護其 0.35 Ether,這是一步非常聰明的操作。以下是執行蜜罐交易的智慧合約(0xe73f1576af5573714404a2e3181f7336d3d978f9)的反編譯代碼。

為了驗證我們的發現,我們在 Phalcon Fork 中模擬了這筆蜜罐交易,將其置於區塊 16964664 的位置 0。

總結

這是首個利用 Flashbots 中繼器漏洞並結合精密攻擊策略的攻擊案例。

  • 首先,此次攻擊利用了 Flashbots 中繼器中的一個零日漏洞。
  • 其次,它利用了貪婪的三明治策略,並使用蜜罐交易引誘 MEV 機器人(受害者)。
  • 第三,它包含了一套自我保護機制,在攻擊未成功時挽回蜜罐交易的成本(0.35 WETH)。

閱讀本系列的其他文章:

Sign up for the latest updates
電子報 - 2026年6月
Security Insights

電子報 - 2026年6月

本月報告涵蓋2026年6月三起最大安全事件,確認損失合計約2200萬美元。一次精密蜜罐攻擊利用未受檢查的代幣授權,從JaredFromSubway的MEV機器人抽走約1500萬美元。兩個舊版Aztec rollup部署因證明結算邊界漏洞損失約435萬美元。SecondFi的Ed25519實現缺陷暴露錢包私鑰,導致374個錢包共損失約240萬美元。三起事件共同模式:表面完整但從未真正執行的安全保證。

~$400萬損失:Taiko、SecondFi遭攻擊 | BlockSec週報
Security Insights

~$400萬損失:Taiko、SecondFi遭攻擊 | BlockSec週報

本週區塊鏈安全報告涵蓋2026年6月22-28日兩起重大事件,以太坊和Cardano確認損失約410萬美元。Taiko橋接漏洞結合了外洩的SGX飛地簽名密鑰與不完整的認證策略,未能拒絕調試飛地,使攻擊者註冊惡意證明者並偽造L2狀態證明。SecondFi錢包漏洞源於Ed25519隨機數派生中的密碼學實現缺陷,移除了秘密輸入,可從Cardano公開交易數據離線恢復私鑰。

~$18M損失:jaredFromSubway、Aztec及更多 | BlockSec每週快報
Security Insights

~$18M損失:jaredFromSubway、Aztec及更多 | BlockSec每週快報

本週區塊鏈安全報告涵蓋2026年6月15日至21日,以太坊與BNB Chain共發生3起重大事件,總損失約1830萬美元。重點分析兩起事件:jaredFromSubway事件揭示反向授權攻擊模式——MEV機器人主動將資產授權給不可信第三方合約套利,攻擊者構造假包裝代幣與交易池,發出真實事件但從未消耗授權額度,損失約1500萬美元。Aztec三日內第二次漏洞:逃生艙ZK電路中`old_data_root`兩個見證值缺少相等約束,致使攻擊者可用偽造Merkle樹證明虛假票據所有權並通過鏈上驗證。

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit