DeFi借貸是相對簡單的借貸方式。
放款人只需將數字貨幣存入借貸池,即可從其存入的資產中獲得利息。
而借款人可以通過在平臺上提供抵押品,以換取放款人提供的借貸資產。
借貸平臺利用價格預言機來確定抵押品的價值,以計算可以借入多少數額。當抵押品的價值低于一定的閾值時,清算人(Liquidator)可通過償還債務來清算,且獲取清算獎勵。
本文將回顧2022年發生的借貸協議黑客攻擊事件,并分析應該如何保護借貸協議。
MangoMarket漏洞
2022年10月11日,Solana上的MangoMarket被攻擊,造成1.16億美元的損失。攻擊者利用了允許項目使用低流動性token作為抵押品的漏洞,操縱MNGO的價格,并惡意借貸超出應有數額的資產。
MNGO只在幾個中心化交易所上線,這意味著其市場流動性很低。
例如其中一個價格預言機Switchboard使用的是Raydium作為價格來源。
攻擊者在訂單簿中提供了4.83億單位的MNGOperps,并向第一個賬戶提供了500萬枚USDC。之后攻擊者向第二個賬戶注資,然后以每單位0.0382美元的價格買入4.83億單位的MNGOperps,從而提高現貨價格。
攻擊者通過操縱價格預言機上MNGO的價格,將其拉高到0.91美元,從而在第二個賬戶上獲利。由于MNGO/美元的價格為每單位0.91美元,第二個賬戶能夠在MangoMarket上借到其他token。
DeFi 概念板塊今日平均跌幅為3.11%:金色財經行情顯示,DeFi 概念板塊今日平均跌幅為3.11%。47個幣種中7個上漲,40個下跌,其中領漲幣種為:YFI(+5.41%)、LBA(+2.87%)、REN(+1.26%)。領跌幣種為:AMPL(-13.25%)、HOT(-8.81%)、IDEX(-8.73%)。[2021/10/12 20:21:53]
攻擊者還用第二個賬戶中的資金在MangoMarket上借入其他token。
上述借款行為使第一個賬戶的壞賬總額為11,306,771.61美元,造成了115,182,674.43美元的資產損失。
下圖就是在Radium上的一個截圖示例,可以看得出MNGO/USDC對的流動性很低。
雖然Mango使用了價格預言機和TWAP,但「專業性」很強且擁有足夠資本的攻擊者,足以在流動性上做一些手腳,特別是當資產只上線了少數交易所導致流動性非常低的時候。
關于Mango漏洞的詳情解析,請查看往期文章《MangoMarket遭受攻擊,損失1.16億美元》。
DeusFinance漏洞
2022年4月28日,DeusFinance被惡意攻擊,導致約1570萬美元資產受到損失。攻擊者操縱了DEItoken的價格,從DeiLenderSolidex合約中提取了大量的DEI,卻只提供了少量的抵押品。這也是在Deus在2022年遭受的第二次攻擊。
歐易OKEx DeFi播報:DeFi總市值624.00億美元,歐易OKEx平臺BADGER領漲:據歐易OKEx統計,DeFi項目當前總市值為624.00億美元,總鎖倉量為741.40億美元;
行情方面,今日DeFi代幣普漲;歐易OKEx平臺DeFi幣種漲幅最高前三位分別是BADGER、FLM、TRB;
截至17:30,OKEx平臺熱門DeFi幣種如下:[2021/6/3 23:08:51]
上圖是DeiLenderSolidex的合約,鏈上價格是一個配對池的價格,輸入價格是來自Muon預言機的加權平均價格。黑客需要同時操縱鏈Muon預言機以及鏈上價格的輸入。Muon預言機監控了SolidlyUSDC/DEI池內的交易,以計算成交量加權平均價格。
在同一個池子里的一系列閃電交易會輸出一個被操縱的價格,并被Muon預言機讀取。
這該漏洞的根本原因是:Muon預言機只使用了Solidly作為價格來源。Swap使用的flashswap()沒有被Muon正確過濾,因此導致了短期內加權平均價格的不一致。
InverseFinance
2022年4月2日,InverseFinance被惡意利用,導致了價值約1450萬美元的資產損失。該事件發生的根本原因在于其使用的第三方價格預言機價格被操縱,因此攻擊者以被操縱的價格借出資產。
Inverse使用的是Keep3r預言機,它完全依賴DEX的價格數據。
WePiggy Ron:DeFi應用更多要從原生性上考慮問題:金色財經現場報道,4月10日,金色財經主辦的共為創新大會“DeFi的創新進階”專場于上海舉辦,會上WePiggy協議開發團隊負責人Ron分享表示,傳統金融和DeFi都是有金融,但已經從“不要作惡”變成了“不能作惡”。去中心化金融在極力的將信任從中心化金融遷移向算法和合約。去中心化借貸協議的資產已經托管到鏈上,借貸利率是根據市場變化隨時變化,不會有中心化機構的資金空轉問題。
DeFi更多應該要從原生性上考慮問題,不要想著鏈下的模式直接搬到鏈上,而是利用鏈上的元素創新。例如Compound等都塑造了一個范式的創新,鏈下的價值不能完全轉向鏈上。[2021/4/10 20:05:07]
它依賴于一個TWAP預言機,該預言機來自一個交易量少的DEX交易對,具有30分鐘的時間窗口,以減輕市場操縱風險。
攻擊者能夠繞過這一限制,在很短的時間內提交兩筆交易,以便用當前池中token數量來計算價格。
攻擊者首先部署了一個惡意合約來操縱SushiSwap/Curve.fiSushiSwap:INV中的INV/XINV的價格。然后他們將上面的INV存入并鑄造了1746(374+1372)個XINV。由于XINV的價格是根據SushiSwap:INV(INV-ETHPair)中的儲備金計算的,所以INV的價格急劇升高,此時每個XINV的價值為20926美元(346*3444/57.7)。
OKEx CEO Jay Hao:OKEx未來將在OKChain上開發Dex、借貸等DeFi項目:9月11日,在主題為《探究韓國明星公鏈Klaytn及行業投資風向》線上訪談欄目中,OKEx CEO Jay Hao表示,DEX的主要優勢集中在資產托管的安全性,以及數據透明等方面。CEX更多是聚焦在交易的高效和快捷性上。兩者應該是互相補充、相輔相成。CEX和DEX互為命運共同體,共同促進加密市場的繁榮。不過,OKEx一直比較注重DeFi背后帶來的長期應用價值。在未來,OKEx也將在OKChain上開發DEX、借貸、衍生品等DeFi項目,進一步去挖掘和實踐隱藏在DeFi背后的應用價值和重大創新。[2020/9/11]
隨著XINV價格被操縱,攻擊者能夠用鑄造的XINV借出資產作為其利潤。借出的資產包括1588ETH、94WBTC、3999669DOLA和39YFI;價值約1450萬美元的資產被盜并轉移到TornadoCash。我們在幾個月前也對這一事件進行了深入分析,請查看往期文章《淚紛紛,被盜項目欲斷魂……InverseFinance被盜1450萬美元事件分析》。
Cashio
2022年3月23日,基于Solana的Cashio穩定幣CASH遭到“無限鑄幣”類型漏洞的惡意利用,導致損失了價值約5000萬美元。該事件根本原因源于缺乏對common.crate_collateral_tokens和depositor_source的必要驗證。攻擊者能夠注入假賬戶以繞過驗證并鑄造CASH。
為了鑄造新的CASH,用戶需要存入抵押品。鑄幣過程的正確性在用戶將“抵押品”轉移到項目中進行驗證。在crate_collateral_tokens的驗證過程中,合約檢查token類型是否與saber_swap.arrow賬戶的類型相匹配。
庫幣DeFi專區數據:DeFi項目整體回調 DIA領漲23%:據庫幣KuCoin交易所DeFi專區數據顯示,截止18日庫幣已上線COMP、AMPL、MKR等18個DeFi項目,共36個交易對。DeFi項目今日行情整體回調,AKRO、JST、MKR分別下跌9.52%、7.74%、6%。最新上線項目DIA領漲DeFi板塊,24h小時漲幅超23%,現報價2.69USDT;ORN 24h漲幅超6%,現報價4.16USDT;PLT 24h漲幅超15%,現報價0.38USDT。
庫幣數字貨幣交易所,為來自207個國家的500萬用戶提供幣幣、法幣、合約、礦池、借貸等一站式服務。[2020/8/18]
然而,合約并沒有對mint字段進行驗證,如下圖saber_swap.arrow所示。攻擊者可以創建一個假的saber_swap.arrow賬戶,這將進一步允許其創建一個假的crate_collateral_tokens賬戶并允許存入假的抵押品。
攻擊的另一個方面是缺乏對depositor_source的檢查,這應該是為了確保被存入的token類型與抵押品相匹配。
用戶可以通過擁有一家bank來設置抵押品的token類型。
使用該crate_mint功能可以無限制地創建抵押token類型,系統并沒有確認與bank關聯的token與正被鑄造的token相同。
因此,攻擊者能夠創建一個假bank并存入無價值的抵押品,使其能夠鑄造真正的CASH并從協議中抽走資金,以此導致了5200萬美元損失的黑客攻擊及相應穩定幣價格的崩潰。
FeiProtocol
2022年4月30日,FeiProtocol宣布他們正在調查RariFuse池上的一個漏洞。
目前報告的總損失約為8000萬美元。攻擊者對borrow函數進行了攻擊。
exitMarket函數驗證存款不再作為貸款的抵押品,然后允許它被提取。然而,borrow()函數沒有遵循check-effect-interaction模式,而是在更新攻擊者的借款記錄之前,就將ETH轉移到攻擊者的合約中。
如上述代碼所示,“doTransferOut()”是在更新借款記錄之前調用的。doTransferOut()函數通過底層調用將ETH轉移給接收方。當borrow函數向借款人發送貸款金額時,它還沒有更新其內部狀態以反映所存資產已經被用作抵押。由于攻擊者的借款記錄沒有及時更新,攻擊者對exitmarket()進行了一個重入攻擊,并提取了他們的抵押品。
關于FeiProtocol攻擊事件的詳情解析,請查看往期文章《死神來了之重入攻擊,FeiProtocol漏洞導致7935萬美元被盜事件分析》。
FantasmFinance
2022年3月09日,FantasmFinance的抵押池被惡意攻擊,導致了約270萬美元的損失。攻擊者利用了協議的mint函數的錯誤檢查代碼_minFtmIn中的缺陷。
錯誤檢查代碼的目的是確保用戶在鑄造XFTM時將FTM存入合約。根據其實現,如果只投入FSM,則需根據FSM的比例來計算XFTM的數量,超過FSM比例的部分需要由FTM來補足。
然而,代碼實際上是與msg.value相比較,來計算接受鑄造的FTM的最小數量。
在上圖的第一個紅框中,重要的_minFtmIn參數被忽略了,甚至沒有聲明這個變量,而是只需要FSM。
當只存入FSM時,不需要補充FTM抵押品。如果FSM占10%,那么10uxFTM可以用1uFSM鑄造。
因此,攻擊者能夠在只存入真實價值的一小部分時鑄造XFTM。鑄造的XFTM隨后被賣回給該項目,使攻擊者能夠從項目中取出資產,并購買更多的FSM用于后續的攻擊。
如何保護借貸協議
2022年是全球Web3.0行業安全的「黑暗」之年。根據我們的統計結果,2022年針對借貸協議的攻擊共造成了超過3億美元的損失——這也意味著,在接下來的幾年中,我們將面對更迫切和更高的安全需求。
接下來我們將討論我們從這些攻擊事件中吸取的教訓,并總結關于如何預防和應對的最佳做法。
增加閃電貸保護
閃電貸允許任何人在沒有抵押的情況下進行大額貸款。也因此經常被黑客使用,成為了多次大規模攻擊的攻擊媒介。
為了避免閃電貸攻擊,開發者應該盡可能地考慮限制閃電貸的使用,只允許非合約地址與合約交互。另一個防止濫用閃電貸的措施是防止關鍵交易在同一區塊內發生。這可以有效地降低與閃電貸攻擊有關的安全風險。
增加可重入性保護
可重入性是智能合約中一個比較常見的安全問題。例如耗盡借貸池和操縱借款記錄,特別是當與其他漏洞相結合時,重入問題可能會導致十分龐大的損失。
為了保護可重入性,項目可以使用OpenZeppelin提供的重入性防護,并遵循check-effect-interaction模式。
選擇一個可靠的價格預言機
預言機應能夠過濾掉模糊的交易并使用多個數據源。避免使用只依賴單一交易對價格的預言機,因為攻擊者只需要操縱一個池子的價格就可以操縱這個預言機的價格。
慎重選擇抵押token
從經濟角度來看,建議限制或不提供流動性差的token的杠桿。使用價格高度波動的token作為抵押品會增加整體風險,因為當token價格大幅波動時,抵押品的價值也會發生很大變化。這增加了攻擊項目經濟模型的機會,就像MangoMarket的情況一樣。它也會影響到系統的整體狀態。如果整體抵押物和借出的token的價值的比例太低,系統可能無法正常運行。
加強對合約配置的安全意識
雖然審計智能合約可以檢查出許多人為錯誤并確保設計實踐一致性,但借貸協議中仍有一些敏感參數需要人工配置。這些參數的不正確設置會導致嚴重的后果,就像錯誤配置的預言機合約會反饋錯誤的數據。開發人員和項目操作人員在配置這些參數時應謹慎行事。
區塊鏈瀏覽器TRONSCAN最新數據顯示,截至2023年3月16日,波場TRON賬戶總數達到147,161,590,正式突破1.47億.
1900/1/1 0:00:00今日下午,多位KOL紛紛發文預警NFT借貸協議ParaSpace團隊內部出現矛盾,并建議用戶盡快撤資,此事在社區內速發酵,大量用戶出于恐慌紛紛頂著高額gas從ParaSpace內撤出資金.
1900/1/1 0:00:00Odaily星球日報譯者|Moni 首個獲得阿布扎比全球市場(ADGM)許可和監管的Layer-1區塊鏈VenomFoundation宣布與同樣受ADGM監管的投資管理公司IcebergCapi.
1900/1/1 0:00:005月9日,金融科技公司DigitalAsset宣布將啟動一個支持隱私的可互操作區塊鏈網絡,旨在為機構客戶提供去中心化的基礎設施.
1900/1/1 0:00:00“迅雷區塊鏈已經正式上線,交易速度可達到每秒100百萬tps。”迅雷鏈總工程師來鑫今日在區塊鏈應用價值技術大會上這樣宣布.
1900/1/1 0:00:002023年的1月,BTC以一根月線級別的大陽線收復了過去半年的跌幅,強勢站上2W美金,成了2023年表現最好的資產,加密總市值重新站上1W億,Crypto以1.04T美金的總市值超過了亞馬遜.
1900/1/1 0:00:00