據慢霧安全團隊情報,2023 年 6 月 1 日,Cellframe 遭到閃電貸攻擊,Cellframe ERC20 v2 價格下跌 41.2%。慢霧安全團隊第一時間介入分析,并將結果分享如下:
相關信息
攻擊者地址:
0x2525c811EcF22Fc5fcdE03c67112D34E97DA6079
攻擊者合約地址:
0x1e2a251b29e84e1d6d762c78a9db5113f5ce7c48
攻擊交易:
0x943c2a5f89bc0c17f3fe1520ec6215ed8c6b897ce7f22f1b207fea3f79ae09a6
攻擊者添加 LP(OLD) 交易:
慢霧:7月3日至7月7日期間?Web3生態因安全問題損失近1.3億美元:7月10日消息,慢霧發推稱,自7月3日至7月7日,Web3生態因安全問題遭遇攻擊損失128,419,000美元,包括Encryption AI、AzukiDao、NFT Trader、MIKE&SID、Bryan Pellegrino、Aptos Foundation、Multichain、CivFund。其中,Multichain被攻擊損失1.26億美元。[2023/7/10 10:12:36]
0xe2d496ccc3c5fd65a55048391662b8d40ddb5952dc26c715c702ba3929158cb9
前置信息
此次攻擊中出現多個新舊合約,我們將使用 LpMigration 合約中新舊合約的參數名作為本次攻擊分析中的合約名。
慢霧:Gate官方Twitter賬戶被盜用,謹慎互動:10月22日消息,安全團隊慢霧發文稱:加密平臺Gate官方Twitter賬戶被盜用,謹慎互動。半小時前,攻擊者利用該賬戶發文,誘導用戶進入虛假網站連接錢包。此外,慢霧科技創始人余弦在社交媒體上發文表示:注意下,Gate官方推特應該是被黑了,發送了釣魚信息,這個網址 g?te[.]com 是假的(之前談過的 Punycode 字符有關的釣魚域名),如果你去Claim會出現eth_sign這種簽名釣魚,可能導致ETH等相關資產被盜。[2022/10/22 16:35:14]
address OLD_CELL: 0xf3E1449DDB6b218dA2C9463D4594CEccC8934346
address LP_OLD: 0x06155034f71811fe0D6568eA8bdF6EC12d04Bed2
慢霧:BXH 第一次被盜資金再次轉移,BTC 網絡余額超 2700 BTC:金色財經報道,10月8日凌晨(UTC+8),慢霧監控到 BXH 第一次被盜資金再次出現異動,經慢霧 MistTrack 分析,異動詳情如下:
黑客地址 0x48c9...7d79 將部分資金(213.77 BTCB,5 BNB 和 1 ETH)轉移至新地址 0xc01f...2aef,接著將資金兌換為 renBTC 跨鏈到 BTC 網絡,跨鏈后地址為 1JwQ...u9oU。1JwQ...u9oU 在此次轉移中接收到的總資金為 204.12 BTC。截止目前,BXH 第一次被盜事件在 BTC 網絡共有 4 個黑客地址,總計余額為 2701.3 BTC,暫未進一步轉移。慢霧 MistTrack 將持續監控被盜資金的轉移。[2022/10/8 12:49:28]
address CELL: 0xd98438889Ae7364c7E2A3540547Fad042FB24642
慢霧:Equalizer Finance被黑主要在于FlashLoanProvider合約與Vault合約不兼容:據慢霧區消息,6 月 7 日,Equalizer Finance 遭受閃電貸攻擊。慢霧安全團隊以簡訊形式將攻擊原理分享如下:
1. Equalizer Finance 存在 FlashLoanProvider 與 Vault 合約,FlashLoanProvider 合約提供閃電貸服務,用戶通過調用 flashLoan 函數即可通過 FlashLoanProvider 合約從 Vault 合約中借取資金,Vault 合約的資金來源于用戶提供的流動性。
2. 用戶可以通過 Vault 合約的 provideLiquidity/removeLiquidity 函數進行流動性提供/移除,流動性提供獲得的憑證與流動性移除獲得的資金都受 Vault 合約中的流動性余額與流動性憑證總供應量的比值影響。
3. 以 WBNB Vault 為例攻擊者首先從 PancekeSwap 閃電貸借出 WBNB
4. 通過 FlashLoanProvider 合約進行二次 WBNB 閃電貸操作,FlashLoanProvider 會先將 WBNB Vault 合約中 WBNB 流動性轉給攻擊者,隨后進行閃電貸回調。
5. 攻擊者在二次閃電貸回調中,向 WBNB Vault 提供流動性,由于此時 WBNB Vault 中的流動性已經借出一部分給攻擊者,因此流動性余額少于預期,則攻擊者所能獲取的流動性憑證將多于預期。
6. 攻擊者先歸還二次閃電貸,然后從 WBNB Vault 中移除流動性,此時由于 WBNB Vault 中的流動性已恢復正常,因此攻擊者使用添加流動性獲得憑證所取出的流動性數量將多于預期。
7. 攻擊者通過以上方式攻擊了在各個鏈上的 Vault 合約,耗盡了 Equalizer Finance 的流動性。
此次攻擊的主要原因在于 Equalizer Finance 協議的 FlashLoanProvider 合約與 Vault 合約不兼容。慢霧安全團隊建議協議在進行實際實現時應充分考慮各個模塊間的兼容性。[2022/6/8 4:09:22]
address LP_NEW: 0x1c15f4E3fd885a34660829aE692918b4b9C1803d
慢霧:BSC項目Value DeFi vSwap 模塊被黑簡析:據慢霧區情報,幣安智能鏈項目 Value DeFi 的 vSwap 模塊被黑,慢霧安全團隊第一時間介入分析,并將結果以簡訊的形式分享,供大家參考:
1. 攻擊者首先使用 0.05 枚 WBNB 通過 vSwap 合約兌換出 vBSWAP 代幣;
2. 攻擊者在兌換的同時也進行閃電貸操作,因此 vSwap 合約會將兌換的 vBSWAP 代幣與閃電貸借出的 WBNB 轉給攻擊者;
3. 而在完成整個兌換流程并更新池子中代幣數量前,會根據池子的 tokenWeight0 參數是否為 50 來選擇不同的算法來檢查池子中的代幣數量是否符合預期;
4. 由于 vSwap 合約的 tokenWeight0 參數設置為 70,因此將會采用第二種算法對池子中的代幣數量進行檢查;
5. 而漏洞的關鍵點就在于采用第二種算法進行檢查時,可以通過特殊構造的數據來使檢查通過;
6. 第二種算法是通過調用 formula 合約的 ensureConstantValue 函數并傳入池子中緩存的代幣數量與實時的代幣數量進行檢查的;
7. 在通過對此算法進行具體分析調試后我們可以發現,在使用 WBNB 兌換最小單位(即 0.000000000000000001) vBSWAP 時,池子中緩存的 WBNB 值與實時的值之間允許有一個巨大的波動范圍,在此范圍內此算法檢查都將通過;
8. 因此攻擊者可以轉入 WBNB 進行最小單位的 vBSWAP 代幣兌換的同時,將池子中的大量 WBNB 代幣通過閃電貸的方式借出,由于算法問題,在不歸還閃電貸的情況下仍可以通過 vSwap 的檢查;
9. 攻擊者只需要在所有的 vSwap 池子中,不斷的重復此過程,即可將池子中的流動性盜走完成獲利。詳情見原文鏈接。[2021/5/8 21:37:37]
具體細節分析
1. 通過 DODO 的 DPPOracle 閃電貸 1000 個 BNB。
2. 通過 PancakeSwap V3 閃電貸 50 萬枚 CELL。
3. 攻擊者在 PancakeSwap V2 LP_NEW 池子中 ,將閃電貸來的 50 萬枚 CELL Token 全部 swap 為 50 枚 BNB。這時,LP_NEW 池中僅剩 8 枚 BNB,而 CELL 有 55 萬枚。
4. 緊接著,攻擊者在另外一個 PancakeSwap V2 池子 LP_OLD 池中,將 900 枚 BNB swap 為 OLD_CELL。此時 LP_OLD 中的 BNB 數量為 902 枚,OLD_CELL 僅有 7 枚。
5. 在攻擊者將 BNB 兌換成 OLD_CELL 后,我們發現攻擊者直接調用 LpMigration 合約的 migrate 函數進行 LP 遷移。奇怪的是,在我們剛剛的分析里,攻擊者并沒有獲取 LP Token 的操作,那么這些 LP Token 又是從哪里來的呢?
6. 于是回到攻擊合約,通過攻擊合約的前一筆交易可以發現,攻擊者在交易中向 LP_OLD 池子添加流動性,獲取 LP(OLD) Token。
7. 攻擊者對 LP_OLD 池的 LP(OLD) 進行連續 migrate 操作,細節如下:
先調用 migrateLP 函數移除 LP(OLD) 的流動性,并將代幣返還給用戶。由于池子 LP_OLD 中的 BNB 代幣很多,在移除流動性時,計算所獲得的 BNB 數量會增加,OLD_CELL 減少。隨后,在 LP_NEW 池中,getReserves 獲取到 BNB 和 CELL 的數量。由于之前的 swap 操作,LP_NEW 池中的 BNB 數量少,CELL 數量多,所以計算出來的 resoult 值會偏大,使得新計算出的 CELL 的 token1 值也偏大。
8. 然而,原本 LpMigration 合約中又是存在 CELL 代幣的,所以攻擊者添加流動性所用的 token1 代幣 CELL 都來自 LpMigration 合約。隨后將計算出的結果添加流動性到 ROUTER_V2 池中。(PS: 這也是為什么在攻擊發生后,Cellframe: Deployer 會通過 withdrawCELL() 函數將合約中的 CELL 代幣全部取出)
9. 也就是說,攻擊者利用 LP_OLD 池中 BNB 多,OLD_CELL 少,通過移除流動性獲取到更多的 BNB。而在 LP_NEW 池中 BNB 少,CELL 多的情況下,以少量的 BNB 和 CELL 就可以添加流動性。攻擊者通過多次 migrate 操作獲利。
10. 最后,攻擊者將 LP_NEW 的流動性移除,將 OLD_CELL 在 LP_OLD 池中兌換為 BNB,并在一個新的 CELL-BUSD 池中先兌換成 BUSD 再兌換成 BNB,償還 FlashLoan,獲利 245.522826177178247245 BNB。
總結
此次攻擊的核心在于利用流動性遷移計算,攻擊者操縱兩個不同池子中的流動性致其不平衡,進而套利。
慢霧科技
個人專欄
閱讀更多
區塊律動BlockBeats
曼昆區塊鏈法律
Foresight News
GWEI Research
吳說區塊鏈
西柚yoga
ETH中文
金色早8點
金色財經 子木
ABCDE
0xAyA
作者:shaneson.eth,來源:作者推特@k63jpx對于DeFi雙幣模型(票據代幣 + 治理代幣),不妨假設協議的可持續利潤S0,和做市商的背后的資金是有限(S1).
1900/1/1 0:00:00來源:北京市人民政府官網京政辦發〔2023〕15號各區人民政府,市政府各委、辦、局,各市屬機構:經市政府同意,現將《北京市促進通用人工智能創新發展的若干措施》印發給你們,請結合實際認真貫徹落實.
1900/1/1 0:00:00威爾士軟件開發者本·阿克(Ben Arc)在2019年第一次遇到了Nostr的開發者@Fiatjaf,當時他入侵了一款吃豆人街機游戲,讓它接受比特幣.
1900/1/1 0:00:00作者:雨中狂睡 Hey,觀眾老爺們,我們又見面了。時間就像一頭野驢啊,跑起來就不停,一晃就到年中了。以下是一份我對于 6 月的展望,這次念叨的東西可能會多一些.
1900/1/1 0:00:00作者:Jaleel、LeftOfCenter,BlockBeatsWeb3 的泛濫一度讓我們質疑去中心化社交平臺存在的意義.
1900/1/1 0:00:00作者:The Block 研究主管@Lars;編譯:Jordan,PANews繼四、五月份持續陷入低迷后,加密行業在剛剛過去的“高溫”六月迎來一定程度的復蘇.
1900/1/1 0:00:00