Four.meme 攻擊事件分析

零時科技
2025-02-13 11:08:43
收藏
我們監測到four.meme項目遭受黑客攻擊,造成的損失約 15, 000 USD 。

作者:零時科技

背景介紹

four.meme是一個 Binance Academy 孵化的類似於 pump.fun 的 memecoin launchpad 。

我們監測到平台上的 memecoin snowboard(https://four.meme/token/0x4abfd9a204344bd81a276c075ef89412c9fd2f64 )遭受黑客攻擊。損失約 15, 000 USD 。攻擊交易為:https://bscscan.com/tx/0x2902f93a0e0e32893b6d5c907ee7bb5dabc459093efa6dbc6e6ba49f85c27f61

攻擊及事件分析

four.meme技術原理

four.meme 是一個在 bnb smartchain 上的類似於 pump.fun 的 memecoin launchpad 。類似的 launchpad 平台主要有三個階段:

•階段1:用戶在平台自定義名稱、logo、描述、社交賬戶(可選)等創建memecoin

•階段2:其他用戶在平台上可以買賣該 memecoin

•階段3:當該 memecoin 市值達到一定閾值時( 24 BNB ),將其遷移到 DEX(PancakeSwap)上

下面,我們詳細了解一下每個階段的具體技術細節。

階段1

用戶在 launchpad 平台上,通過接口填寫需要創建的 memecoin 的具體信息。

帥不過三秒,Four.meme攻擊事件分析

填寫完成後,支付手續費便完成 memecoin 的鏈上合約創建。當然這個合約是由 launchpad 官方的合約創建的,所以創建後的 ERC-20 Token 的 owner 也是 launchpad 官方合約。下面我們可以看一下 four.meme 的一個 memecoin 創建的例子:

首先,由用戶支付手續費, launchpad 官方合約完成 memecoin 的 ERC-20 Token 合約部署,並mint 1,000,000,000 初始資金(該 memecoin 預計的虛擬池總量為 30 BNB ),

帥不過三秒,Four.meme攻擊事件分析

隨後,我們看到創建好的 Token 的 owner 同樣也是 launchpad 官網的智能合約。

帥不過三秒,Four.meme攻擊事件分析

這也就說明雖然在 launchpad 上, memecoin 是該用戶創建的,但實際上鏈上的 ERC-20 合約的 owner 並不是該用戶,這樣做的可以防止用戶自行 mint 等一些惡意行為出現。該 memecoin 智能合約在鏈上部署完成就進入第二階段,平台上的所有用戶進行買賣。

階段2

平台上其他用戶可以通過平台進行買賣,但是,買賣後的 token 沒法通過 transfer 轉給其他用戶,我們可以看一下鏈上 ERC-20 Token 的源代碼,

帥不過三秒,Four.meme攻擊事件分析

其中在 _beforeTokenTransfer 通過參數 _mode 對轉帳進行了限制

帥不過三秒,Four.meme攻擊事件分析

此時,我們可以看到階段2的 Token 對應的 mode 為1,也就是 MODETRANSFER_RESTRICTED ,限制轉帳第三方。

帥不過三秒,Four.meme攻擊事件分析

此舉是為了防止場外 OTC 對價格的影響。當買賣時, four.meme 合約通過先將 _mode 設置為2 後利用 transfer 給用戶轉帳,轉帳完成後再將 _mode 設置為 1 ,限制其他用戶轉帳。來完成購買後 memecoin 的轉帳。

帥不過三秒,Four.meme攻擊事件分析

階段3

當該 memecoin 的市值達到 24 BNB 時,此時 Bonding Curve Process 達到 100% 。launchpad 官方就會將剩下的 20% memecoin 和 24 BNB 遷移到 DEX PancakeSwap 上。至此,階段3正式完成。下面的交易就是 launchpad 官方將 memecoin 遷移到 PancakeSwap 上的交易。

帥不過三秒,Four.meme攻擊事件分析

帥不過三秒,Four.meme攻擊事件分析

我們可以看到,首先 launchpad 官方將 memecoin 的 mode 設置為 0 ,即 MODENORMAL ,允許用戶進行場外交易。接著,launchpad 官方創建了一個 memecoin 和 WBNB 的交易對,最後將 23.5BNB (其中 0.5 BNB 為 fee )和2億 memecoin 的流動性添加到了該交易對中。添加流動性的價格為 sqrtPriceX96 = 27169599998237907265358521 。因為 sqrtPriceX96 的計算公式如下:

帥不過三秒,Four.meme攻擊事件分析

所以,添加流動性時的該 memecoin 價格為 0.0000001175 WBNB ,也可以通過 23.5 WBNB 除以2億memecoin 得到,所以每個幣遷移到DEX的價格都時相同的。均為 0.0000001175 WBNB 。

攻擊原理

在了解完整個 memecoin 在 four.meme 的生命周期後,我們再來詳細看一下攻擊流程。首先,攻擊者提前創建了一個已經初始化的DEX交易對。並且,將交易對的 sqrtPriceX96 設置為10000000000000000000000000000000000000000 ,比正常值大了 368058418256012 倍。

帥不過三秒,Four.meme攻擊事件分析

當該 memecoin 的 bond cvure process 到達 100% 時, launchpad 將該 memecoin 遷移到 DEX 時,使用 createAndInitializePoolIfNecessary 來創建交易對。由於該交易對在之前已經被攻擊者創建並初始化。所以就按照創建時攻擊者初始化的價格添加了流動性。相當於莫名拉高了該memecoin 的價格。

帥不過三秒,Four.meme攻擊事件分析

此時,該 launchpad 使用 1 個 memecoin 和 23.5 WBNB 添加了流動性。隨後,疑似攻擊者使用了1600 memecoin 將交易對中的 23.4 WBNB 兌換完成,至此攻擊結束。

帥不過三秒,Four.meme攻擊事件分析

總結

本次漏洞的成因是在 Four.meme 在內盤的 bonding curve process 為100%,向DEX進行遷移時。使用 createAndInitializePoolIfNecessary 創建 PancakeSwap 交易對。沒有考慮到交易對已經被提前創建的情況,因為錯誤的使用了攻擊者提前創建並初始化完成的交易對,利用攻擊者設置的錯誤的價格添加了流動性。導致遷移後該 memecoin 的價格暴增,隨後攻擊者利用手中的memecoin 將池子中的 WBNB 掏空完成攻擊。建議項目方在設計經濟模型和代碼運行邏輯時要多方驗證,合約上線前審計時盡量選擇多個審計公司交叉審計。

鏈捕手ChainCatcher提醒,請廣大讀者理性看待區塊鏈,切實提高風險意識,警惕各類虛擬代幣發行與炒作,站內所有內容僅係市場信息或相關方觀點,不構成任何形式投資建議。如發現站內內容含敏感信息,可點擊“舉報”,我們會及時處理。
banner
ChainCatcher 與創新者共建Web3世界