zombie
> > > >
> > > >

重現無聊猿 「ApeCoin 空投」 閃電貸套利手法

2022/03/25 14:59
重現無聊猿 「ApeCoin 空投」 閃電貸套利手法

2022 年 3 月 17 日,無聊猿(Bored Ape Yacht Club)確認發幣,將 ApeCoin 總供應量的 15% 空投分配給了 BAYC / MAYC 持有者,無聊猿持有者為了獲得空投,必須積極與空投智能合約互動,導致以太坊 gas fee 飆升至約 400 gwei,為當時平均 gas fee 的 10 倍。

空投開始五分鐘後 ,一位準備充分的持有者利用 NFTX 上的 BAYC 流動性進行了非常聰明的套利 / 漏洞利用操作。由於這可能是第一次使用 ERC721 和 NFT AMM DEX 執行的閃電貸套利 / 漏洞利用,因此我們必須在此對其進行重現以深入解析。

AirdropGraphsToken 合約

無聊猿持有者能夠調用 AirdropGraphsToken 合約的 claimTokens() 函數來領取 ApeCoin 空投。

如下方的程式碼片段所示,在第 105 行核對 alpha.balanceOf() 和 beta.balanceOf() 以確保調用者確實是 BAYC / MAYC 持有者。然後,有清單來註記已領取的 tokenId(第 114-117 行),如此一來第 110 行中的 getClaimableTokenAmountAndGammaToClaim() 函數將就能讓合約調用者僅領取到可領取的 ApeCoin 數量。

如果您曾經領取過其他空投,您可能已注意到透過這些 balanceOf() 函數檢查 claimTokens() 調用者的資格並不常見。事實上,許多項目會生成一個默克爾樹(merkle tree),並且將根(Merkle Tree Root ) 節點提交到區塊鏈上來進行資格核查。

balanceOf() 函數的調用使惡意行為者能夠借用無聊猿索取 ApeCoin 空投,但如果領取的 ApeCoin 價值高於借出的費用,那麼惡意行為者將能憑空創造獲利。

NFTX

關於 ERC20,自 2020 年初以來,我們已經從駭客那裡習得很多關於如何使用閃電貸攻擊來獲利的方法。但在 ERC721 並不常見。 NFTX 是少數允許用戶出於特定目的進行 ERC721 閃電貸的平台之一。

具體來說,NFTVault 合約中的 flashLoan() 函數允許用戶借用任意數量的 vault Token(vToken),該代幣可用於贖回目標 NFT。

如下方程式碼片段所示,在第 998 行 vToken 的鑄造數量有賴於在第 999 行執行的 onFlashLoan() 回調函數。當 onFlashLoan() 回調時,「數量 + 費用」vToken 在第 1003 行被燒毀,這表示 flashLoan() 的調用者必須準備的 vToken 需大於借來的 vToken 才能執行 flashLoan() 函數 。

那麼,我們可以用 vToken 做什麼呢?好吧,如果 BAYC NFTXVault 有 10 個無聊猿作為流動性,用戶可以:

  1. 閃借 10 個 BAYC vToken
  2. 贖回 10 個 Apes
  3. 領取 ApeCoins
  4. 鑄造 10 個 BAYC vToken
  5. 償還 10 個 BAYC vToken +額外費用。

除了目前的零閃電貸費用外,NFTX 對閃電貸使用者收取贖回和鑄造費用。您需要支付 1.04 BAYC vToken 才能兌換 1 BAYC NFT。支付 1 個 BAYC NFT 後,您只能獲得 0.9 個 BAYC vTokens。因此,仔細安排用於借貸的代幣數量非常重要。

利用邏輯缺陷領取空投

讓我們從做些數學題開始。透過分析套利/漏洞利用交易,我們知道燒毀 5 個 vToken 可用來兌換 5 個 Apes,但這些步驟(加上費用)實際上燒毀了 5.2 個 vToken。後來,6 隻無聊猿(包括二手的 BAYC)被發送到 NFTX 金庫以鑄造 5.4 個 vToken。在支付 5.2 個借出的 vToken 後,0.2 個 vToken 在 SushiSwap 被兌換成約 14 個 ETH。

基於上述訊息,我們可以透過在 SushiSwap 上購買一些 BAYC vToken 並將這些 vToken 用作贖回 / 鑄造費用來重現該漏洞。但是,SushiSwap WETH-BAYC 池中只有約 0.9 個 BAYC vToken,這意味著由於 AMM 的工作方式,我們需要支付大量 ETH 來購買 vToken。因此,惡意行為者選擇花費 106 ETH 從 OpenSea 購買 #1060 BAYC,以將其抵押用於部分的贖回 / 鑄造費。

藉由 Exp 合約中的 #1060 BAYC,我們可以透過調用 NFTVault.flashLoan() 函數從 NFTVault 贖回所有可用的 Apes,如下所示:

由於每次贖回消耗 1.04 個 vToken,我們需要借出的 vToken 數量將是金庫擁有的 Apes 數量的 1.04 倍(第 56-57 行)。

在 onFlashLoan() 回調函數中,我們首先使用 tokenOfOwnerByIndex() 輔助函數獲取金庫擁有的 Apes 清單(第 84-89 行)。 然後,我們逐步執行 vToken 贖回 NFT(redeem()函數)、領取Ape代幣(claimTokens()函數) 和重鑄造 vtoken 償還(mint() 函數)操作,如下所示:

在 onFlashLoan() 函數結束時,程式執行返回到我們的 trigger() 函數,餘額為 0.2 個 vToken。 在 trigger() 函數的下半部分,我們在 SushiSwap 將所有 vToken 交換為 ETH,並在持有者地址收集這些 ETH 和領取的 APE,如下方程式碼片段所示。

下面是用 eth – brownie+ganache 模擬套利/漏洞利用的截圖:漏洞利用者支付 106 ETH 購入 NFT 後,並以 14.15 ETH + 60,564 APE 獲利出場。

後果

根據 CoinMarketCap 的數據,在 3/18 ~ 3/20 期間,APE 的交易價格高於 10 美元,而當漏洞利用者購買 #1060 BAYC 時,ETH 的價格約為 2,760 美元。 因此,利潤為:

(($10 * 60564) – ($2,760 * (106–14.15))) = ~ $350k。

在我們內部區塊鏈數據分析平台的幫助下,截至 2022 年 3 月 21 日,我們確定了 1 萬個 BAYC 中的 8,647 個已用於領取 ApeCoin 空投。這意味著截至筆者撰寫本文時,人們仍然能透過類似方式收集一些無聊猿,以換取 ApeCoin 空投、賺取利潤。

關於 Amber Group 

Amber Group 是一家領先全球的加密金融服務提供商,全球 24 小時全天候營運,業務遍及香港、首爾、溫哥華及全球各大主要城市。成立於 2017 年的 Amber Group 為 1,000 多家知名大型機構客戶提供服務,在 100 多個電子交易所中累計交易總額已超過 1 兆美元,資產管理規模超過 50 億美元。作為一家綜合的加密金融服務提供商,Amber Group 幫助客戶獲得流動性,賺取收益並管理各種加密資產的風險,透過提供投資靈活性和最大化回報來優化長期價值。

如欲瞭解更多,請參訪官方網站 WhaleFin官方網站

join Zombit

加入桑幣的社群平台,跟我們一起討論加密貨幣新資訊!

Amber Group

Amber Group

桑幣熱門榜

zombie

桑幣正在徵文中,我們想要讓好的東西讓更多人看見!
只要是跟金融科技、區塊鏈及加密貨幣相關的文章,都非常歡迎向我們投稿
投稿信箱:[email protected]

為提供您更多優質的服務與內容,本網站使用 cookies 分析技術。若您繼續閱覽本網站內容,即表示您同意我們使用 cookies,關於更多相關隱私權政策資訊,請閱讀我們的隱私權及安全政策宣示