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
Harmony 跨鏈 ONE 鑄幣事件 + 約4700萬美元金鑰洩露損失 | BlockSec
Security Insights

Harmony 跨鏈 ONE 鑄幣事件 + 約4700萬美元金鑰洩露損失 | BlockSec

2026年8月10日至16日期間,共5起重大安全事件,量化損失約4700萬美元。深度分析聚焦Harmony Layer-1鏈實作缺陷:跨分片收據重放導致原生ONE被未授權鑄造,目的分片以未驗證的MerkleProof.ShardID及BlockNum欄位判定收據已花費標記,而非依簽署來源標頭,使已入帳收據可重放而無對應來源分片扣款。約偽造3.01兆ONE,惟其名目價值遠超代幣市值,無法變現亦未確認實現損失,故Harmony不計入總額;約4700萬美元來自私鑰洩露(未知巨鯨錢包約2500萬、Kite約1400萬、Coinsbuy約790萬)及Fox業務邏輯缺陷(約11.7萬)。

~$160萬美元損失:Moke代幣、LpdFi遭攻擊利用 | BlockSec週報
Security Insights

~$160萬美元損失:Moke代幣、LpdFi遭攻擊利用 | BlockSec週報

2026年8月3-9日當週,BNB Chain發生2起重大安全事件,總損失約160萬美元,均源於價格操縱。LpdFi事件(約69.7萬美元)重複使用同一可操縱的PancakeSwap流動池儲備進行訂單估值和利息贖回,使攻擊者虛增本金並操控池子以索取超額利息。Moke Token事件(約90.6萬美元)結合可操縱現貨價格與重複LP分紅計算,多次領取虛增的MOKE及BNB分紅。

COLDCARD事件:當錢包的「隨機」助記詞並不隨機
Security Insights

COLDCARD事件:當錢包的「隨機」助記詞並不隨機

COLDCARD固件存在靜默構建整合漏洞,導致比特幣種子生成回退至軟件RNG,其弱隨機性使錢包種子可被離線破解。由於弱點存在於種子本身,固件更新無法修復;截至2026年8月7日,已確認損失達1,405 BTC(約9,100萬美元),私下估計高達2,055 BTC。

Best Security Auditor for Web3

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

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