比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > XRP > Info

DeFi平臺Lendf.Me被黑細節分析及防御建議_SUP

Author:

Time:1900/1/1 0:00:00

前言

據慢霧區情報,以太坊 DeFi 平臺 Lendf.Me 遭受重入漏洞攻擊。慢霧安全團隊在收到情報后隨即對此次攻擊事件展開分析,并快速定位了問題所在。

據慢霧科技反洗錢(AML)系統初步統計分析,Lendf.Me 被攻擊累計的損失約 24,696,616 美元,具體盜取的幣種及數額為:

之后攻擊者不斷通過 1inch.exchange、ParaSwap、Tokenlon 等 DEX 平臺將盜取的幣兌換成 ETH 及其他代幣。

以下是詳細分析過程。

攻擊細節

本次對 Lendf.Me 實施攻擊的攻擊者地址為 0xa9bf70a420d364e923c74448d9d817d3f2a77822,攻擊者通過部署合約 0x538359785a8d5ab1a741a0ba94f26a800759d91d 對 Lendf.Me 進行攻擊。

Fantom鏈上DeFi協議總鎖倉量為117.3億美元:金色財經報道,據DefiLlama數據顯示,目前Fantom鏈上DeFi協議總鎖倉量為117.3億美元,24小時增加11.08%。鎖倉資產排名前五分別為multichan(70.2億美元)、0xDAO(3.92億美元)、SpookySwap(9.67億美元)、Yearn Finance(7.37億美元)、Curve(6.28億美元)。[2022/1/24 9:10:01]

通過在 Etherscan 上查看攻擊者的其中一筆交易:https://etherscan.io/tx/0xae7d664bdfcc54220df4f18d339005c6faf6e62c9ca79c56387bc0389274363b

我們發現,攻擊者首先是存入了 0.00021593 枚 imBTC,但是卻從 Lendf.Me 中成功提現了 0.00043188 枚 imBTC,提現的數量幾乎是存入數量的翻倍。那么攻擊者是如何從短短的一筆交易中拿到翻倍的余額的呢?這需要我們深入分析交易中的每一個動作,看看究竟發生了什么。

DeFi一周數據速覽(2.1-2.8):金色財經報道,據歐科云鏈OKLink數據顯示,本周漲幅前三的幣種為:UMA 7日漲幅158.20%,鎖倉量為8.893億美元(+30.49%);MKR 7日漲幅71.8%,鎖倉量為55.6億美元(+16.07%);BADGER 7日漲幅70.7%,鎖倉量為16.6億美元(+38.33%);此外,當前以太坊上穩定幣流通總量達到315.7 億美元,近一周新增45億美元。更多數據見下圖。[2021/2/8 19:12:48]

通過把該筆交易放到 bloxy.info 上查看,我們能知道完整的交易流程

通過分析交易流程,我們不難發現攻擊者對 Lendf.Me 進行了兩次 supply() 函數的調用,但是這兩次調用都是獨立的,并不是在前一筆 supply() 函數中再次調用 supply() 函數。

報告:DeFi不會立即對傳統金融機構造成威脅 但會提供可以借鑒的解決方案:Crypto.com聯合波士頓咨詢集團BCG旗下數字化實施咨詢團隊BCGPlatinion發布了一份關于DeFi的新報告。報告在概述DeFi的優點和缺陷后總結稱,若DeFi想要大幅提升采用率,則需關注以下六個重要事項,包括區塊鏈吞吐量和高網絡費用、流動性、安全和智能合約風險、需超額抵押、監管風險等。另外,報告指出,DeFi或將通過提供一種既便宜又快速的替代方案來解決傳統金融領域中關于支付、借貸以及交易所等的低效率、高成本的問題。盡管絕大多數金融人士質疑DeFi究竟能否完全解決傳統金融領域所面臨的挑戰,而且DeFi也面臨著很多監管、安全等風險,但這并不意味著DeFi會立即威脅到傳統金融領域。相反,DeFi鼓勵商業金融機構、中央銀行和加密貨幣社區進行合作,以構建具有和技術彈性的新一代金融解決方案。在這種需求下,盡管DeFi的熱度會隨著炒作的消退可能會大幅下降,但隨著全球化的發展以及業務生態系統進一步轉向建立在共享治理和去中心化基礎上的新一代業務模型,對諸如DeFi之類的解決方案的需求將不斷增長,也會提供給傳統機構可以借鑒的解決方案。[2020/9/10]

緊接著,在第二次 supply() 函數的調用過程中,攻擊者在他自己的合約中對 Lendf.Me 的 withdraw() 函數發起調用,最終提現

幣信對話超級君:DeFi的暴漲來自于各種金融之間需求的摩擦:9月7日,在幣信直播間進行的DeFi直播里,超級君表示:“DeFi的暴漲來自于各種金融之間需求的摩擦,其中一個典型就是借貸之間的摩擦,有借有貸,比如礦工買礦機,借錢買幣等等。自Compound用代幣發行之后有代幣經濟,于是大家可以對DeFi的各種項目進行估值,從信仰驅動變成了業務驅動。而DeFi標志性的發展不一定是Compound,我覺得是YFI,治理和分發的模式啟迪了所有新項目,告訴它們如何長時間維持下去。而DeFi的市場攪動了之前中心化交易所的沉淀資金,這就是DeFi市場錢來的來源。”[2020/9/8]

在這里,我們不難分析出,攻擊者的 withdraw() 調用是發生在 transferFrom 函數中,也就是在 Lendf.Me 通過 transferFrom 調用用戶的 tokensToSend() 鉤子函數的時候調用的。很明顯,攻擊者通過 supply() 函數重入了 Lendf.Me 合約,造成了重入攻擊,那么具體的攻擊細節是怎樣的呢?我們接下來跟進 Lendf.Me 的合約代碼。

Sandy Liang:Defi成功與否取決于多重因素:近日,12Ships CMO? Sandy Liang作客“XBIT和他的朋友們”,就“Defi是否可以成為區塊鏈下一個爆發點?”分享了自己的看法。他認為Defi是加密數字資產行業基于區塊鏈技術與精神的一次可貴實驗。這場實驗成功與否,取決于類似技術、市場需求、用戶教育程度和監管等多重因素。

現在去判定Defi是否會成為“爆發點”還為時較早,這場實驗目前還處于早期階段。

而且Defi項目之間的聯系和影響是多維度的,一旦出現單個風險,是否會進而產生系統性風險,需要經歷一段時間內市場實踐的檢驗。[2020/5/27]

代碼分析

Lendf.Me 的 supply() 函數在進行了一系列的處理后,會調用一個 doTransferIn 函數,用于把用戶提供的幣存進合約,然后接下來會對 market 變量的一些信息進行賦值。回顧剛才說的攻擊流程,攻擊者是在第二次 supply() 函數中通過重入的方式調用了 withdraw() 函數提現,也就是說在第二次的 supply() 函數中,1590 行后的操作在 withdraw() 之前并不會執行,在 withdraw() 執行完之后,1590 行后的代碼才會繼續執行。這里的操作導致了攻擊者可提現余額變多。

我們深入分析下 supply() 函數

根據上圖,可以看到,在 supply() 函數的末尾,會對 market 和用戶的余額進行更新,在這之前,用戶的余額會在函數的開頭預先獲取好并保存在 localResults.userSupplyCurrent,如下:

通過賦值給 localResults 變量的方式,用戶的轉入信息會先暫時保存在這個變量內,然后此時攻擊者執行 withdraw() 函數,我們看下 withdraw() 函數的代碼:

這里有兩個關鍵的地方:

1、在函數的開頭,合約首先獲取了 storage 的 market 及 supplyBalance 變量。

2、在 withdraw() 函數的末尾,存在同樣的邏輯對 market 用戶的余額信息 (supplyBalance) 進行了更新,更新值為扣除用戶的提現金額后的余額。

按正常的提現邏輯而言,在 withdraw() 單獨執行的時候,用戶的余額會被扣除并正常更新,但是由于攻擊者將 withdraw() 嵌入在 supply() 中,在 withdraw() 函數更新了用戶余額 (supplyBalance) 后,接下來在 supply() 函數要執行的代碼,也就是 1590 行之后,用戶的余額會再被更新一次,而用于更新的值會是先前 supply() 函數開頭的保存在localResults 中的用戶原先的存款加上攻擊者第一次調用 supply() 函數存款的值。

在這樣的操作下,用戶的余額雖然在提現后雖然已經扣除了,但是接下來的 supply() 函數的邏輯會再次將用戶未扣除提現金額時的值覆蓋回去,導致攻擊者雖然執行了提現操作,但是余額不但沒有扣除,反而導致余額增加了。通過這樣的方式,攻擊者能以指數級別的數量提現,直至把 Lendf.Me 提空。

防御建議

針對本次攻擊事件慢霧安全團隊建議:

1、在關鍵的業務操作方法中加入鎖機制,如:OpenZeppelin 的 ReentrancyGuard

2、開發合約的時候采用先更改本合約的變量,再進行外部調用的編寫風格

3、項目上線前請優秀的第三方安全團隊進行全面的安全審計,盡可能的發現潛在的安全問題

4、多個合約進行對接的時候也需要對多方合約進行代碼安全和業務安全的把關,全面考慮各種業務場景相結合下的安全問題

5、合約盡可能的設置暫停開關,在出現“黑天鵝”事件的時候能夠及時發現并止損

6、安全是動態的,各個項目方也需要及時捕獲可能與自身項目相關的威脅情報,及時排查潛在的安全風險

附OpenZeppelin ReentrancyGuard: 

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol

Tags:DEFIEFIDEFSUPAlchemist DeFi AurumWEFINMy Defi LegendsSuperman

XRP
金色觀察 | Defi的應用范圍有多大?_DEF

近日,dForce平臺盜幣事件的發生讓業內對Defi的思考進入了新的階段。首先思考的一定是Defi的安全性,任何安全不達標的技術都不適合金融業務.

1900/1/1 0:00:00
如何在家運行比特幣全節點?_TOR

不是你的鑰匙,也就不是你的比特幣了。從門頭溝事件到 Bitfinex 再到后來的 Coincheck ,這些重大黑客攻擊案例顯示,把你的加密貨幣存在交易所或者托管錢包里總不是最好的主意.

1900/1/1 0:00:00
數字化技術為農村按下“快進鍵” 茶農首次用上支付寶區塊鏈技術_聯盟鏈

“用上區塊鏈后,我覺得我和馬云的差距也沒那么大了。”完成一筆1100斤的大單后,廖紅軍對自家的茶葉充滿了信心.

1900/1/1 0:00:00
金色趨勢丨BTC減半前的最后沖刺?_比特幣

分析平臺Glassnode數據顯示,從比特幣鏈上的基本面因素看,比特幣作為一種避險資產的說法已在逐步鞏固。比特幣網絡活躍地址數量已飆升至2019年7月以來的高點.

1900/1/1 0:00:00
真假波卡生態項目 如何辨別?_POL

PolkaWorld 的后臺經常收到這樣的提問:xxx 是不是波卡生態的項目?巧的是,基本都是我們從來沒聽過的項目.

1900/1/1 0:00:00
加密貨幣與傳統投資可以比較嗎?_NBL

加密貨幣本質上是去中心化的,因此它們很可能成為其他投資品的穩定替代方案。人們參與的最常見的傳統投資是股票市場,債券,外匯(外匯)以及貴金屬.

1900/1/1 0:00:00
ads