前言
據慢霧區情報,以太坊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 概念板塊今日平均跌幅為3.41%:金色財經行情顯示,DeFi 概念板塊今日平均跌幅為3.41%。47個幣種中6個上漲,41個下跌,其中領漲幣種為:BZRX(+15.28%)、YFV(+13.08%)、TRB(+5.55%)。領跌幣種為:SWFTC(-11.45%)、YFII(-9.03%)、MKR(-8.28%)。[2021/8/17 22:18:29]
以下是詳細分析過程。
攻擊細節
本次對Lendf.Me實施攻擊的攻擊者地址為?0xa9bf70a420d364e923c74448d9d817d3f2a77822,攻擊者通過部署合約?0x538359785a8d5ab1a741a0ba94f26a800759d91d對Lendf.Me進行攻擊。
通過在Etherscan上查看攻擊者的其中一筆交易:https://etherscan.io/tx/0xae7d664bdfcc54220df4f18d339005c6faf6e62c9ca79c56387bc0389274363b
DeFi協議Balancer上線社區治理快照投票,僅批準11名簽名人員進行多簽:DeFi協議Balancer上線社區治理快照投票,提議將治理方式改為使用多重簽名錢包Gnosis Safe進行多簽,本次投票將批準產生11名簽名人員,由社區成員組成。多簽唯一功能是執行BAL持有人的意愿。[2021/4/3 19:43:02]
我們發現,攻擊者首先是存入了0.00021593枚imBTC,但是卻從Lendf.Me中成功提現了0.00043188枚imBTC,提現的數量幾乎是存入數量的翻倍。那么攻擊者是如何從短短的一筆交易中拿到翻倍的余額的呢?這需要我們深入分析交易中的每一個動作,看看究竟發生了什么。
通過把該筆交易放到bloxy.info上查看,我們能知道完整的交易流程
DeFi總市值331.2億美元 OKEx平臺LON領漲:據OKEx統計,DeFi項目當前總市值為331.2億美元,總鎖倉量為339.3億美元。行情方面,今日DeFi代幣今日漲跌各異,OKEx平臺DeFi幣種漲幅前三位分別是LON、FRONT、AP13。截至19:30,OKEx平臺熱門DeFi幣種表現如下:[2021/1/21 16:42:40]
通過分析交易流程,我們不難發現攻擊者對Lendf.Me進行了兩次supply()函數的調用,但是這兩次調用都是獨立的,并不是在前一筆supply()函數中再次調用supply()函數。
緊接著,在第二次supply()函數的調用過程中,攻擊者在他自己的合約中對Lendf.Me的withdraw()函數發起調用,最終提現
在這里,我們不難分析出,攻擊者的withdraw()調用是發生在transferFrom函數中,也就是在Lendf.Me通過transferFrom調用用戶的tokensToSend()鉤子函數的時候調用的。很明顯,攻擊者通過supply()函數重入了Lendf.Me合約,造成了重入攻擊,那么具體的攻擊細節是怎樣的呢?我們接下來跟進Lendf.Me的合約代碼。
孫宇晨:JST的價值是波場DeFi的核心組成部分:據最新消息顯示,波場TRON創始人兼BitTorrent CEO孫宇晨在「張姨楊姨」幣圈吐槽大會直播中表示:“投資了JST,就相當于投資了uniswap、Compound、TBTC、Synthetix,這個所有功能結合到一個幣的功能上。相當于買一個頂四個,剩下三個全是送的。JST的價值是波場DeFi的核心組成部分。”[2020/7/29]
代碼分析
Lendf.Me的supply()函數在進行了一系列的處理后,會調用一個doTransferIn函數,用于把用戶提供的幣存進合約,然后接下來會對market變量的一些信息進行賦值。回顧剛才說的攻擊流程,攻擊者是在第二次supply()函數中通過重入的方式調用了withdraw()函數提現,也就是說在第二次的supply()函數中,1590行后的操作在withdraw()之前并不會執行,在withdraw()執行完之后,1590行后的代碼才會繼續執行。這里的操作導致了攻擊者可提現余額變多。
我們深入分析下supply()函數
火幣通過 Chainlink 向 DeFi 世界提供可靠的交易所數據喂價:7月3日,火幣錢包宣布,將向 Chainlink 提供火幣全球站交易數據,為連接到 Chainlink 上的任何 DeFi應用程序提供可靠、安全與透明的喂價服務。同時火幣將利用 Chainlink 提供的外部設配器實現火幣交易所應用程序接口(API)對智能合約的可用性,從而讓任何人可通過 API 訪問全球綜合交易量最大的交易所之一的火幣全球站的價格數據。 此外,火幣也是第一個運行Chainlink節點的交易所。火幣將把安全運行基礎設施的經驗帶到Chainlink網絡中,并進一步實現可用于語言機數據服務的節點數量的去中心化。 火幣錢包CEO Will Huang 指出:“DeFi通過提供透明、開放且可編程的金融產品為區塊鏈金融提供了獨特的價值。我們非常高興能夠通過運行自己的Chainlink 節點以及為用戶提供Huobi 交易所的數據,來加速我們對這一新興趨勢的參與。“ Chainlink CEO 兼聯合創始人Sergey Nazarov表示:“能夠協助火幣將他們的交易所數據安全可靠的提供到 DeFi 市場對我們來說是非常振奮人心的。火幣通過成為我們的節點和使用我們開發的適配器,讓智能合約很方便的調用火幣Global的API 數據。”[2020/7/3]
根據上圖,可以看到,在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
本文來源:中共中央黨校官網,原文刊于《行政管理改革》2020年第4期,原文標題《區塊鏈嵌入政府管理方式變革研究》,作者:劉煉箴楊東在將信息技術應用于政府管理的背景下.
1900/1/1 0:00:00原文作者:JamesonLopp 來源:金色財經 編者注:原標題為《那些流行的比特幣Meme》按:“不要信,去驗證。”、“不掌握私鑰,就不是你的幣.
1900/1/1 0:00:00來源:LongHash 編者注:原標題為《山寨幣價差超比特幣說明了什么?》比特幣的先發優勢帶來了巨大的網絡效應,這已經不是什么秘密了.
1900/1/1 0:00:00文丨互鏈脈搏編輯部 耳熟能詳的星巴克、慶豐包子鋪都很可能在雄安新區最早使用央行數字貨幣。互鏈脈搏獨家獲悉,4月22日下午,雄安新區召開了法定數字人民幣試點推介會.
1900/1/1 0:00:00作者?|CoinMetrics 翻譯:子銘 對于市場供應的準確衡量對于確定數字資產的價值來說非常關鍵.
1900/1/1 0:00:00視頻:https://www.iqiyi.com/v_19rwfooezs.html哈嘍大家好,我是小K君.
1900/1/1 0:00:00