前言
據慢霧區情報,以太坊 DeFi 平臺 Lendf.Me 遭受重入漏洞攻擊。慢霧安全團隊在收到情報后隨即對此次攻擊事件展開分析,并快速定位了問題所在。
據慢霧科技反洗錢(AML)系統初步統計分析,Lendf.Me 被攻擊累計的損失約 24,696,616 美元,具體盜取的幣種及數額為:
之后攻擊者不斷通過 1inch.exchange、ParaSwap、Tokenlon 等 DEX 平臺將盜取的幣兌換成 ETH 及其他代幣。
以下是詳細分析過程。
攻擊細節
本次對 Lendf.Me 實施攻擊的攻擊者地址為 0xa9bf70a420d364e923c74448d9d817d3f2a77822,攻擊者通過部署合約 0x538359785a8d5ab1a741a0ba94f26a800759d91d 對 Lendf.Me 進行攻擊。
數據:當前DeFi協議總鎖倉量為2068.8億美元:2月11日消息,據Defi Llama數據顯示,目前DeFi協議總鎖倉量2068.8億美元,24小時減少2.70%。鎖倉資產排名前五分別為Curve(197.7億美元)、MakerDAO(172.8億美元)、AAVE(136.9億美元)、Convex Finance(136.3億美元)、WBTC(112.7億美元)。[2022/2/11 9:45:25]
通過在 Etherscan 上查看攻擊者的其中一筆交易:https://etherscan.io/tx/0xae7d664bdfcc54220df4f18d339005c6faf6e62c9ca79c56387bc0389274363b
我們發現,攻擊者首先是存入了 0.00021593 枚 imBTC,但是卻從 Lendf.Me 中成功提現了 0.00043188 枚 imBTC,提現的數量幾乎是存入數量的翻倍。那么攻擊者是如何從短短的一筆交易中拿到翻倍的余額的呢?這需要我們深入分析交易中的每一個動作,看看究竟發生了什么。
基于Arbitrum的DeFi協議Magicland正式上線IoTeX公鏈:據官方消息,基于以太坊擴容方案Arbitrum的DeFi協議Magicland宣布,即將正式上線新一代高性能公鏈IoTeX,成為DeFiverse市場上首個跨鏈DeFi協議。Magicland是一個一站式去中心化DeFi協議,以太坊擴容方案Arbitrum上的收益農場。
IoTeX作為硅谷開源項目成立于2017年,以鏈接現實世界和數字世界為發展目標,是與以太坊全兼容的高性能公有區塊鏈。[2021/9/19 23:36:27]
通過把該筆交易放到 bloxy.info 上查看,我們能知道完整的交易流程
通過分析交易流程,我們不難發現攻擊者對 Lendf.Me 進行了兩次 supply() 函數的調用,但是這兩次調用都是獨立的,并不是在前一筆 supply() 函數中再次調用 supply() 函數。
DeFi 概念板塊今日平均跌幅為1.17%:金色財經行情顯示,DeFi 概念板塊今日平均跌幅為1.17%。47個幣種中11個上漲,36個下跌,其中領漲幣種為:KNC(+49.21%)、KNC(+28.95%)、ZRX(+13.82%)。領跌幣種為:GXC(-12.23%)、WICC(-8.96%)、NAS(-7.92%)。[2021/6/2 23:03:38]
緊接著,在第二次 supply() 函數的調用過程中,攻擊者在他自己的合約中對 Lendf.Me 的 withdraw() 函數發起調用,最終提現
在這里,我們不難分析出,攻擊者的 withdraw() 調用是發生在 transferFrom 函數中,也就是在 Lendf.Me 通過 transferFrom 調用用戶的 tokensToSend() 鉤子函數的時候調用的。很明顯,攻擊者通過 supply() 函數重入了 Lendf.Me 合約,造成了重入攻擊,那么具體的攻擊細節是怎樣的呢?我們接下來跟進 Lendf.Me 的合約代碼。
Acala全球開放貢獻者YuZhu:辨別Defi項目需從產品設計等角度去衡量:金色財經現場報道,在金色財經主辦的 “金色沙龍第59期上海站:“DeFi-2021發展形勢與投資價值分析”的活動圓桌環節中,Acala 全球開放貢獻者 YuZhu發言指出:關于Defi投資策略,第一點是產品層面,如產品是否擁有應用場景,是否能提高用戶的資產利用率;第二點是在技術層面。技術層面就是說首先團隊技術能力要強,不管是在波卡還是其他的生態里,都要看這個團隊在這個領域的技術能力和技術經驗是否豐富。第三要看社區和市場合作,如社區運營方面等,需要中西方平衡,如果僅僅只聚焦一個市場的用戶,那么可能在半年或一年之內就會發現用戶增長的瓶頸。所以我覺得要辨別一些項目,是需要從產品設計、技術能力,用戶教育以及社區市場方面等角度去衡量。[2021/1/22 16:47:37]
代碼分析
聚幣CEO : Jubi DeFi將為用戶提供一站式挖礦服務:據官方消息,聚幣CEO Jeff 在聚咖說直播時表示,Jubi DeFi將為用戶提供一站式挖礦服務,Jubi DeFi質押JT借貸挖礦的產品初衷是希望給持倉JT的用戶更多投資機會。用戶可通過質押JT借貸JUSD,獲得1:1USDT的穩定流動資金去參與新業務、新項目,還可在享有JT持有者權益的同時,借貸挖礦Jubi DeFi板塊礦幣JFI獲得額外收益。
未來,聚幣Jubi DeFi板塊將陸續推出多幣種的質押借貸挖礦、鎖倉挖礦以及流動性挖礦產品。[2020/9/9]
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
昨日,dForce旗下Defi貸款協議Lendf.Me遭遇黑客攻擊,損失大約2500萬美元。今日凌晨,dForce創始人楊民道在官方微信公眾號發布公告,對事情發展、團隊動態進行說明解釋.
1900/1/1 0:00:00日前,國家網信辦官網發布第三批共224個境內區塊鏈信息服務名稱及備案編號。至此,區塊鏈信息服務備案達730個,相關服務遍布24個省市。全國大多數省市均有區塊鏈信息服務,產業化進程進一步推進.
1900/1/1 0:00:004月28日,開曼群島立法議會在公報上公布了五項新法規,以管理加密貨幣業務,尤其是交易所。金色熱搜榜:SEELE居于榜首:根據金色財經排行榜數據顯示,過去24小時內,SEELE搜索量高居榜首.
1900/1/1 0:00:00受疫情影響,全球資本市場震蕩加劇,投資者避險情緒不斷升級。就連避險資產首選的黃金,也在疫情爆發初期遭遇到了大幅拋售,而比特幣當然也無法獨善其身,價格一度跌破4000美金,同時疫情之下對白酒板塊的.
1900/1/1 0:00:00就像是給手機充電一樣簡單。當車主需要使用充電樁充電時,共享充電樁平臺會對充電過程進行記錄,并在數字身份確權后對充電費用支付結算;平臺中的成員可以對充電情況進行公開透明的實時記賬,從而解決多方之間.
1900/1/1 0:00:00dForce在向Lendf.Me用戶返還全部資產后,2020年4月30日,dForce團隊發布“Better Future”計劃及倡議.
1900/1/1 0:00:00