前言
據慢霧區情報,以太坊 DeFi 平臺 Lendf.Me 遭受重入漏洞攻擊。慢霧安全團隊在收到情報后隨即對此次攻擊事件展開分析,并快速定位了問題所在。
據慢霧科技反洗錢(AML)系統初步統計分析,Lendf.Me 被攻擊累計的損失約 24,696,616 美元,具體盜取的幣種及數額為:
之后攻擊者不斷通過 1inch.exchange、ParaSwap、Tokenlon 等 DEX 平臺將盜取的幣兌換成 ETH 及其他代幣。
以下是詳細分析過程。
攻擊細節
本次對 Lendf.Me 實施攻擊的攻擊者地址為 0xa9bf70a420d364e923c74448d9d817d3f2a77822,攻擊者通過部署合約 0x538359785a8d5ab1a741a0ba94f26a800759d91d 對 Lendf.Me 進行攻擊。
21Shares推出兩只專注于DeFi的加密ETP:5月12日消息,瑞士加密ETF發行商21Shares推出兩只ETP,允許投資者獲得DeFi敞口。21Shares周四在瑞士SIX交易所上市了其Layer 1 ETP(LAY1),21Shares DeFi 10 Infrastructure ETP(DEFII)將于5月18日在BX瑞士交易所上市。
LAY1跟蹤指數提供商Vinter開發的一個指數,包括按市值計算的15個最大的Layer 1區塊鏈。每個區塊鏈分配的最大權重為30%,每季度進行一次再平衡。
DEFII也跟蹤Vinter指數,專注于DeFi應用程序和Layer 1區塊鏈,每個部分代表基準的一半。這兩類資產都是按市值排序的,每季度重新加權一次。
據該公司稱,21Shares是歐洲首家推出基于DeFi指數的ETP發行商。這些產品可供歐洲各地的投資者使用,21Shares將尋求在其他區域交易所交叉上市。(Blockworks)[2022/5/12 3:10:16]
通過在 Etherscan 上查看攻擊者的其中一筆交易:https://etherscan.io/tx/0xae7d664bdfcc54220df4f18d339005c6faf6e62c9ca79c56387bc0389274363b
DeFi Technologies 子公司 Valor 在法蘭克福證券交易所推出 Cardano 和 Polkadot ETP:金色財經報道 ,DeFi Technologies 子公司 Valor 在法蘭克福證券交易所推出了兩種交易所交易產品(ETP): Cardano 和 Polkadot ETP。Cardano 的原生代幣 ADA 市值約為330 億美元,是市值第七大加密貨幣,Polkadot (DOT) 的市值約為 200 億美元,排名第 10。除了 Cardano、Polkadot 和 Solana ETP,Valor 還提供 Uniswap (UNI) 基金,以及免手續費的 Bitcoin Zero 和Ethereum Zero 產品,該公司計劃提供更多單一資產加密貨幣籃子以及主題 ETP。(blockworks)[2022/2/15 9:51:43]
我們發現,攻擊者首先是存入了 0.00021593 枚 imBTC,但是卻從 Lendf.Me 中成功提現了 0.00043188 枚 imBTC,提現的數量幾乎是存入數量的翻倍。那么攻擊者是如何從短短的一筆交易中拿到翻倍的余額的呢?這需要我們深入分析交易中的每一個動作,看看究竟發生了什么。
DeFi平臺Beta Finance獲得575萬美元融資,紅杉資本印度領投:11月1日消息,去中心化金融(DeFi)平臺Beta Finance 周五表示,已獲得575萬美元融資,由紅杉資本印度領投,ParaFi Capital, DeFiance Capital, Spartan Group, GSR, Delphi Digital和Multicoin Capital等參投。Beta Finance為用戶提供借貸和做空加密貨幣解決方案,致力于為用戶提供一種更容易的對沖風險的途徑。(Techcrunch)[2021/11/1 21:15:08]
通過把該筆交易放到 bloxy.info 上查看,我們能知道完整的交易流程
通過分析交易流程,我們不難發現攻擊者對 Lendf.Me 進行了兩次 supply() 函數的調用,但是這兩次調用都是獨立的,并不是在前一筆 supply() 函數中再次調用 supply() 函數。
億萬富翁Matthew Roszak:一年內DeFi市場將增長10倍:2月19日消息,億萬富翁風險投資家及Bloq聯合創始人Matthew Roszak表示,目前市值400億美元的去中心化金融(DeFi)可能會“在一年內再增加一個零”(增長10倍)。他稱,DeFi的創新周期是實時發生的。最值得注意的是在DeFi堆棧中呈現的收益率機會。雖然金融機構還沒有將資金投入流動性挖礦中。但資本回報率存在“宏觀需求”。現在,早期采用者正在積累這種價值。(CoinDesk)[2021/2/19 17:28:27]
緊接著,在第二次 supply() 函數的調用過程中,攻擊者在他自己的合約中對 Lendf.Me 的 withdraw() 函數發起調用,最終提現
在這里,我們不難分析出,攻擊者的 withdraw() 調用是發生在 transferFrom 函數中,也就是在 Lendf.Me 通過 transferFrom 調用用戶的 tokensToSend() 鉤子函數的時候調用的。很明顯,攻擊者通過 supply() 函數重入了 Lendf.Me 合約,造成了重入攻擊,那么具體的攻擊細節是怎樣的呢?我們接下來跟進 Lendf.Me 的合約代碼。
Arcadia正在審計Value DeFi和Sentivate的FaaSPool智能合約:區塊鏈安全軟件開發公司Arcadia發推宣布,正在對Value DeFi協議和Sentivate的FaaSPool智能合約進行審計。據10月28日報道, Value DeFi協議在推特宣布,Arcadia Group已完成對Governance Vault v2的審計。[2020/11/1 11:22:18]
代碼分析
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
自2008年后,中國的互聯網黃金十年,已經結束。在這一輪浪潮里,用戶們從PC時代遷移到了移動互聯網時代,從大屏遷移到了小屏。技術、需求、商業三浪并發,形成了偌大的全球商業形態.
1900/1/1 0:00:00本周加密社區技術消息較少,因此本周的技術周刊只包含以太坊、COSMOS、Hyperledger、Filecoin四個網絡的技術動態.
1900/1/1 0:00:00金色財經訊,過去幾周,穩定幣在加密貨幣市場的份額越來越大。根據Coin Metrics的數據顯示,4月20日,流通中的穩定幣市值超過90億美元,創下新高.
1900/1/1 0:00:004月16日,Libra2.0版本白皮書發布。相較于1.0版,項目推出了單幣種穩定幣,在儲備機制、合規設計和治理結構上都做了修改.
1900/1/1 0:00:00日前,深圳某區法院一改以往只對虛擬幣中的BTC認定盜竊罪的做法,將對ETH的盜竊行為也認定為盜竊罪.
1900/1/1 0:00:00截止報告發布時間(2020 年 5 月 1 日),本周五全球數字貨幣資產總市值為 2,452.01 億美元,同比上漲 314.26 億美元,上漲 14.7%.
1900/1/1 0:00:00