前言
據慢霧區情報,以太坊DeFi平臺Lendf.Me遭受重入漏洞攻擊。慢霧安全團隊在收到情報后隨即對此次攻擊事件展開分析,并快速定位了問題所在。
據慢霧科技反洗錢(AML)系統初步統計分析,Lendf.Me被攻擊累計的損失約24,696,616美元,具體盜取的幣種及數額為:
WETH:55159.02134,
WBTC:9.01152,
CHAI:77930.93433,
HBTC:320.27714,
HUSD:432162.90569,
BUSD:480787.88767,
PAX:587014.60367,
TUSD:459794.38763,
USDC:698916.40348,
USDT:7180525.08156,
USDx:510868.16067,
imBTC:291.3471
之后攻擊者不斷通過1inch.exchange、ParaSwap、Tokenlon等DEX平臺將盜取的幣兌換成ETH及其他代幣。
DeFi協議Anchor更改ANC空投規則:金色財經消息,據Terra生態DeFi協議Anchor Protocol(ANC)官方推特消息,其原生代幣ANC的最后一次空投將交給Terra(LUNA)的質押者,Anchor不會再進行空投。
所有空投無人認領的用戶需在6月1日之前進行認領,屆時該功能將被移除,合約將被遷移,Anchor空投合約中剩余的74,070,000ANC將轉移到AnchorProtocol的社區池中。[2022/4/21 14:37:21]
以下是詳細分析過程。
攻擊細節
本次對Lendf.Me實施攻擊的攻擊者地址為?0xa9bf70a420d364e923c74448d9d817d3f2a77822,攻擊者通過部署合約?0x538359785a8d5ab1a741a0ba94f26a800759d91d對Lendf.Me進行攻擊。
通過在Etherscan上查看攻擊者的其中一筆交易:https://etherscan.io/tx/0xae7d664bdfcc54220df4f18d339005c6faf6e62c9ca79c56387bc0389274363b
DeFi基礎建設團隊TrustToken推出全新TrueFi借貸市場:2月4日,因 Stablecoin TUSD 而聞名的 DeFi 基礎建設團隊 TrustToken 推出了全新 TrueFi 借貸市場,允許資產管理公司在 TrueFi 借貸市場平臺上創建自己的去中心化金融產品,有可能為 DeFi 解決方案的更廣泛主流采用打開大門。TrustToken 投資機構 Andreessen Horowitz 的普通合伙人 Ali Yahya 稱,TrueFi 將「把 DeFi 的獨特優勢帶給更廣泛的全球用戶」。(Cointelegraph)[2022/2/4 9:30:46]
我們發現,攻擊者首先是存入了0.00021593枚imBTC,但是卻從Lendf.Me中成功提現了0.00043188枚imBTC,提現的數量幾乎是存入數量的翻倍。那么攻擊者是如何從短短的一筆交易中拿到翻倍的余額的呢?這需要我們深入分析交易中的每一個動作,看看究竟發生了什么。
Avalanche鏈上DeFi協議總鎖倉量為81.8億美元:金色財經報道,據DefiLlama數據顯示,目前Avalanche鏈上DeFi協議總鎖倉量為81.8億美元,24小時減少4.17%。鎖倉資產排名前五分別為AAVE(22.2億美元)、TraderJoe(10.3億美元)、Benqi(9.55億美元)、Curve(9.34億美元)、multichan(8.11億美元)。[2022/1/25 9:10:21]
通過把該筆交易放到bloxy.info上查看,我們能知道完整的交易流程
通過分析交易流程,我們不難發現攻擊者對Lendf.Me進行了兩次supply()函數的調用,但是這兩次調用都是獨立的,并不是在前一筆supply()函數中再次調用supply()函數。
緊接著,在第二次supply()函數的調用過程中,攻擊者在他自己的合約中對Lendf.Me的withdraw()函數發起調用,最終提現
DeFi 概念板塊今日平均漲幅為7.24%:金色財經行情顯示,DeFi 概念板塊今日平均漲幅為7.24%。47個幣種中41個上漲,6個下跌,其中領漲幣種為:REP(+16.11%)、ZRX(+15.65%)、BZRX(+14.79%)。領跌幣種為:HOT(-9.98%)、DMG(-5.05%)、LEND(-1.42%)。[2021/7/22 1:08:45]
在這里,我們不難分析出,攻擊者的withdraw()調用是發生在transferFrom函數中,也就是在Lendf.Me通過transferFrom調用用戶的tokensToSend()鉤子函數的時候調用的。很明顯,攻擊者通過supply()函數重入了Lendf.Me合約,造成了重入攻擊,那么具體的攻擊細節是怎樣的呢?我們接下來跟進Lendf.Me的合約代碼。
Perceptron Capital、PrimeDAO和Defi Chad在dHEDGE推出資產池:資產管理協議dHEDGE發推稱,Perceptron Capital、PrimeDAO和Defi Chad分別在dHEDGE推出資產池, dHEDGE DAO均投資20000 sUSD。這些資產池都支持使用Fox Swap。[2021/3/27 19:23:10]
代碼分析
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提空。
防御建議
針對本次攻擊事件慢霧安全團隊建議:
在關鍵的業務操作方法中加入鎖機制,如:OpenZeppelin的ReentrancyGuard
開發合約的時候采用先更改本合約的變量,再進行外部調用的編寫風格
項目上線前請優秀的第三方安全團隊進行全面的安全審計,盡可能的發現潛在的安全問題
多個合約進行對接的時候也需要對多方合約進行代碼安全和業務安全的把關,全面考慮各種業務場景相結合下的安全問題
合約盡可能的設置暫停開關,在出現“黑天鵝”事件的時候能夠及時發現并止損
安全是動態的,各個項目方也需要及時捕獲可能與自身項目相關的威脅情報,及時排查潛在的安全風險
附:
OpenZeppelinReentrancyGuard:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol
今日晚7點,巴比特產業大課第三期——「區塊鏈項目操盤手學習周」繼續開講。雄安區塊鏈實驗室副主任、中國計算機學會區塊鏈專委會副主任李軍以《歷史機遇下,雄安新區的區塊鏈布局》為主題進行分享.
1900/1/1 0:00:00來源:IPRdaily 編者注:原標題為《2019年全球區塊鏈發明專利排行榜》導讀:近日,知識產權產業媒體IPRdaily與incoPat創新指數研究中心聯合發布“2019年全球區塊鏈發明專利排.
1900/1/1 0:00:00作者:LiangChe 來源:比推bitpush.news編者注:原標題《拳打巴菲特腳踢索羅斯!這支基金將進軍比特幣期貨市場》根據3月30日向監管機構提交的表格.
1900/1/1 0:00:00文:比薩林格 來源:一本區塊鏈 一張央行數字貨幣DC/EP錢包的截圖,引爆了近期的股市。超過14支股票收獲一個或多個漲停板,有的最高周漲幅高達51%.
1900/1/1 0:00:00前言:加密穩定幣旨在實現錨定1美元,給人們更直觀的穩定想象。不過,從黑色星期四事件看,DAI價格飆升后,要降下來很難。本文提出了一種反射債券的模式,它的目的是減少其抵押品的波動性.
1900/1/1 0:00:00文:互鏈脈搏·元尚 幾乎同一時間,中國央行的DC/EP和臉書聯盟主導的libra都有重大突破。4月14日開始,央行數字貨幣在農業銀行、中國銀行的客戶端以及在蘇州相城區等試點陸續披露;4月16日,
1900/1/1 0:00:00