Back to Blog

APE空投閃電貸攻擊簡析

Code Auditing
March 17, 2022
3 min read
(圖片取自 Bored Ape Yacht Club 的創始人揭開 ApeCoin 加密代幣面紗 (lifestyleasia.com))
(圖片取自 Bored Ape Yacht Club 的創始人揭開 ApeCoin 加密代幣面紗 (lifestyleasia.com))

根據 Will Sheehan 的報導,APE 代幣遭到了 MEV 機器人的攻擊。經過分析,我們認為這是由於 APE 代幣的空投(AirDrop)程式僅檢查當下的即時狀態(spot state),而該狀態可被攻擊者操縱所致。

具體來說,攻擊者可以借入可用於兌換 NFT 的 BYAC 代幣,然後利用這些 NFT 來領取空投。隨後,攻擊者透過 BYAC NFT 鑄造回 BYAC 代幣以歸還閃電貸(flashloan)。然而,攻擊者在此過程中卻獲得了空投的 APE 代幣。我們認為這類似於基於閃電貸的價格操縱攻擊,即合約僅考慮了資產的即時價格(而該價格是可以被操縱的)。

接下來,我們將透過此攻擊交易來說明此過程。

第一步:準備用於支付閃電貸費用的 NFT

攻擊者將 1060 號 NFT 轉移至攻擊合約 0x7797。請注意,此 NFT 並非透過閃電貸借入,而是以 106 ETH 購買的。

第二步:透過閃電貸借入 BYAC 代幣

第三步:使用 NFT 領取 APE 代幣

請注意,在此過程中,攻擊者總共擁有六個 NFT。其中一個是他/她購買的 1060 號,另外五個是使用借來的 BYAC 代幣兌換而得(在第二步中)。總計獲得了 60,564 個 APE 代幣。

第四步:鑄造 NFT 以獲得 BYAC 代幣

攻擊者鑄造了這六個 NFT 以取回 BYAC 代幣。請注意,攻擊者還鑄造了他自己的 NFT(1060 號)來支付閃電貸的費用。由於在償還閃電貸後仍有剩餘的 BYAC 代幣(因為他鑄造了自己的 BYAC NFT 1060 號),攻擊者將剩餘的 BYAC 代幣兌換成了約 14 ETH。

獲利

總計,攻擊者獲得了 60,564 個 APE 代幣,價值約 500 萬美元(撰寫本部落格時)。成本則為一個 NFT(106 ETH - 14 ETH),約為 27 萬美元。

教訓

我們認為此問題在於,APE 代幣的空投僅考慮了 NFT 是否由某人持有的即時狀態。這是脆弱的,因為攻擊者可以使用閃電貸來操縱這種即時狀態。如果閃電貸的成本低於空投代幣的價值,就會創造出如本次攻擊中所示的攻擊機會。

致謝

感謝 Will Sheehan 舉報該筆交易。

關於 BlockSec

BlockSec 是一家開創性的區塊鏈安全公司,由一群全球傑出的安全專家於 2021 年創立。公司致力於提升新興 Web3 世界的安全性和可用性,以促進其大規模採用。為此,BlockSec 提供智慧合約和 EVM 鏈安全審計服務、用於安全開發與主動防禦威脅的 Phalcon 平台、用於資金追蹤與調查的 MetaSleuth 平台,以及協助 Web3 開發者在加密世界中高效瀏覽的 MetaDock 擴充功能。

迄今為止,公司已服務超過 300 家知名客戶,如 MetaMask、Uniswap Foundation、Compound、Forta 和 PancakeSwap,並從 Matrix Partners、Vitalbridge Capital 和分佈式資本(Fenbushi Capital)等頂尖投資者處獲得了兩輪數千萬美元的融資。

官方網站:https://blocksec.com/

官方 Twitter 帳號:https://twitter.com/BlockSecTeam

Best Security Auditor for Web3

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

BlockSec Audit