以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads
首頁 > TRX > 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 進行攻擊。

DeFi協議總鎖倉量超700億美元,24小時內漲5.38%:金色財經報道,據DefiLlama數據顯示,DeFi協議總鎖倉量(TVL)達到701.7億美元,24小時內漲幅為5.38%。TVL排名前五分別為MakerDAO(90.7億美元)、Lido(82.8億美元)、AAVE(74.4億美元)、Uniswap(66.9億美元)、Curve(62.4億美元)。[2022/8/11 12:18:31]

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

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

Terra鏈上DeFi鎖倉量為175.5億美元,24小時下降16%:金色財經報道,據 Defi Llama 數據顯示,當前 Terra 鏈上 DeFi 鎖倉量為 175.5億美元,24小時下降16%,仍排名第二。

目前,鎖倉量排名前 5 的公鏈分別為以太坊(1614.8 億美元)、Terra( 175.5 億美元)、BSC(172.6億美元)、Solana(124.9 億美元)、Avalanche(122.6 億美元)。[2021/12/28 8:08:23]

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

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

《經濟學人》DeFi主題封面NFT以99.9ETH的價格售出:10月27日消息,《經濟學人》DeFi 主題封面 NFT 在Foundation平臺以 99.9 ETH 的價格售出,目前價值約 42 萬美元。封面“進入兔子洞:去中心化金融的承諾和危險”,由數字藝術家Justin Metz委托創作,根據Sir John Tenniel為 1865 年出版的第一版《愛麗絲夢游仙境》Alice in Wonderland 所繪制。此次出售標志著這家擁有 178 年歷史的國際出版物首次涉足 NFT。《經濟學人》將保留該數字作品 10% 的版稅股份,本次拍賣和所有未來的銷售收入將捐給獨立慈善機構“經濟學人教育基金會”。[2021/10/27 21:00:59]

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

DeFi 概念板塊今日平均漲幅為0.76%:金色財經行情顯示,DeFi 概念板塊今日平均漲幅為0.76%。47個幣種中21個上漲,26個下跌,其中領漲幣種為:HDAO(+26.71%)、TRB(+11.50%)、SRM(+10.16%)。領跌幣種為:AMPL(-5.02%)、NEST(-4.76%)、SWFTC(-4.50%)。[2021/5/3 21:19:05]

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

數字文藝復興基金會曹寅:DeFi名稱具有誤導性 優勢不是去中心化而是非許可:據官方消息,在由OKEx主辦的“后疫情時代:DeFi的機遇與挑戰”社群活動上,數字文藝復興基金會曹寅表示,Defi的名稱具有一定誤導性,去中心化并不是DeFi的目的,僅僅是手段。DeFi并不特指一種技術或者一類產品,而是一種社會運動和思潮,是一種利用開源軟件和去中心化網絡將金融產品轉變為無需信任中介,無需中心操作即可運行的透明金融協議運動。DeFi的優勢并不是去中心化,而是非許可,去中介,自動化,從P2P到P2C,Peer to Contract,去掉了傳統金融中交易對手方的風險。[2020/4/30]

代碼分析

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:SUPPPLPLYUPPsuperdiamondMetapPlayDynamic Supply TrackerGuppy

TRX
金色趨勢丨BTC窄幅震蕩后市怎么走?_MAC

自前期大幅拉升后,目前又處于小級別的震蕩走勢,符合前期一貫的節奏,區間震蕩等待均線上移,只要不有效跌破5日線,現貨繼續持有,4小時走勢,位于一個上升通道內運行,短線明顯上方受阻于通道上沿壓制.

1900/1/1 0:00:00
遭DDoS攻擊 如何確定賠償范圍?_SEI

防范、處理攻擊事件,是各大平臺安全部門的日常工作。近日最高檢發布的第18批公報案例中,有一起利用DDoS攻擊手段引起服務器崩潰的案件.

1900/1/1 0:00:00
海南自貿區迎區塊鏈科技企業入駐 累計已有5159家_區塊鏈

中新網記者23日獲悉,海南抹鏈網絡科技有限公司(下稱“抹鏈科技”)宣布正式入駐海南自由貿易區。抹鏈科技進駐的海南自貿區(港)區塊鏈試驗區是海南實施自貿港政策的“排頭兵”之一,目前已有騰訊、百度、.

1900/1/1 0:00:00
金色薦讀 | 閃電網絡的快與慢_比特幣

Overview 概述 閃電網絡作為比特幣的擴容解決方案之一,保持了比特幣原鏈的核心特征。區別于 BCH、BSV 兩個比特幣分叉項目,閃電網絡技術路徑并沒有選擇通過增加比特幣區塊容量大小來擴容,

1900/1/1 0:00:00
為奪回比特大陸法人 詹克團不服起訴北京海淀市場監督管理局_區塊鏈

吳說區塊鏈最新獲悉,詹克團曾通過起訴北京市海淀區市場監督管理局,試圖改變比特大陸將法人變更為吳忌寒的決定。但詹克團在提出沒多久后就自行撤訴。撤訴后,目前詹克團正在申請行政復議中.

1900/1/1 0:00:00
金色趨勢丨BTC調整蓄勢 準備下一波的反彈?_區塊鏈

金色財經挖礦數據播報 | BTC今日全網算力上漲1.98%:金色財經報道,據蜘蛛礦池數據顯示: ETH全網算力178.271TH/s,挖礦難度2193.14T,目前區塊高度9776389.

1900/1/1 0:00:00
ads