前言
據慢霧區情報,以太坊 DeFi 平臺 Lendf.Me 遭受重入漏洞攻擊。慢霧安全團隊在收到情報后隨即對此次攻擊事件展開分析,并快速定位了問題所在。
據慢霧科技反洗錢(AML)系統初步統計分析,Lendf.Me 被攻擊累計的損失約 24,696,616 美元,具體盜取的幣種及數額為:
之后攻擊者不斷通過 1inch.exchange、ParaSwap、Tokenlon 等 DEX 平臺將盜取的幣兌換成 ETH 及其他代幣。
以下是詳細分析過程。
攻擊細節
本次對 Lendf.Me 實施攻擊的攻擊者地址為 0xa9bf70a420d364e923c74448d9d817d3f2a77822,攻擊者通過部署合約 0x538359785a8d5ab1a741a0ba94f26a800759d91d 對 Lendf.Me 進行攻擊。
安全團隊:DeFi 借貸協議 Sentiment 大部分被盜資金仍在攻擊者地址:金色財經報道,據區塊鏈安全審計公司Beosin旗下Beosin EagleEye安全風險監控、預警與阻斷平臺監測顯示,2023年4月5日,
DeFi借貸協議sentiment協議遭到攻擊,損失約1百萬美元,Beosin Trace追蹤發現已有0.5WBTC、30個WETH、538,399USDC和360,000USDT被盜,目前,大部分被盜資金還在攻擊者地址。其攻擊的原因在于重入導致的價格錯誤。
攻擊交易:https://arbiscan.io/tx/0xa9ff2b587e2741575daf893864710a5cbb44bb64ccdc487a100fa20741e0f74d
Beosin安全團隊現將分析結果分享如下:
1.攻擊者首先調用Balancer Vault的“joinPool”函數進行質押。
2.然后再調用“exitPool”取回質押,在這個過程中,Balancer Vault會向攻擊者發送eth從而調用攻擊合約的fallback函數。在該函數中,攻擊者調用0x62c5合約的borrow函數,該過程需要根據Balancer Vault.getPoolTokens()的返回數據進行價格計算。而當前正在攻擊者的\"exitPool\"過程中,pool中總供應量已經減少而數據還沒有更新,攻擊者利用這個數據錯誤從而多借出資產達成獲利。
攻擊者收到消息,如果在4月6日8點(UTC)前歸還資產,會獲得95000美元獎勵,并不會被追究。[2023/4/5 13:45:50]
通過在 Etherscan 上查看攻擊者的其中一筆交易:https://etherscan.io/tx/0xae7d664bdfcc54220df4f18d339005c6faf6e62c9ca79c56387bc0389274363b
新加坡金管局宣布首個數字資產和DeFi行業試點上線:11月2日消息,新加坡金融管理局(MAS)宣布,其ProjectGuardian的第一個探索批發融資市場中潛在DeFi應用的行業試點項目已完成首次實時交易。已經啟動更多的行業試點,以測試資產代幣化和DeFi在金融領域更廣泛用例中的應用。在第一個行業試點中,星展銀行、摩根大通和SBIDigitalAssetHoldings針對由代幣化新加坡政府債券、日本政府債券、日元(JPY)和新加坡元(SGD)組成的流動性池進行外匯和政府債券交易。
據金色財經此前報道,新加坡金管局完成其CBDC項目ProjectOrchid的第一階段,星展銀行將參與試點PBM代金券。[2022/11/2 12:09:02]
我們發現,攻擊者首先是存入了 0.00021593 枚 imBTC,但是卻從 Lendf.Me 中成功提現了 0.00043188 枚 imBTC,提現的數量幾乎是存入數量的翻倍。那么攻擊者是如何從短短的一筆交易中拿到翻倍的余額的呢?這需要我們深入分析交易中的每一個動作,看看究竟發生了什么。
Lux Capital股東:NFT投資與DeFi投資截然不同:金色財經報道,Lux Capital的股東Grace Isford在接受采訪時表示,她在web3的投資方法根植于她所謂的 \"能力圈\",或者說她與這個領域的其他人相比可以有競爭力的領域。Isford表示,NFT投資與DeFi投資截然不同,DeFi投資與加密數據基礎設施投資截然不同,我認為,任何說自己投資web3的人都不應該投資所有這些,他們可能應該在自己的核心競爭力中選擇自。
此外,Isford表示,與web2相比,web3 缺乏企業級安全解決方案。Alchemy 和 Infura 是業內僅有的兩家主要節點服務提供商,這意味著大多數加密貨幣依賴于兩家基礎設施提供商來管理他們的數據。[2022/5/30 3:49:45]
通過把該筆交易放到 bloxy.info 上查看,我們能知道完整的交易流程
DeFi資管協議Enzyme宣布在以太坊主網上線V4產品Sulu:2月14日消息,DeFi資管協議Enzyme宣布在以太坊主網上線V4產品Sulu,未來幾周還將在Polygon 上線。Enzyme v4的特點包括自主設置金庫代碼、金庫份額可轉讓、允許贖回特定資產、引入退出費用、可借用資產等。
據悉,Enzyme(原名Melon)旨在使參與者能夠以開放、競爭、透明和去中心化的方式建立、管理和投資數字資產的資金。通過使用智能合約使后臺和中臺流程自動化,Enzyme 使資產經理和基金發起人能夠創建自己的代幣化投資工具。[2022/2/15 9:51:29]
通過分析交易流程,我們不難發現攻擊者對 Lendf.Me 進行了兩次 supply() 函數的調用,但是這兩次調用都是獨立的,并不是在前一筆 supply() 函數中再次調用 supply() 函數。
數據:DeFi市場TVL跌破1000億美元:據defillama數據,當前DeFi市場TVL約983.38億美元,跌破1000億美元關口。排名前十的DeFi協議近24小時的TVL跌幅多數在10%以上。[2021/6/22 23:56:02]
緊接著,在第二次 supply() 函數的調用過程中,攻擊者在他自己的合約中對 Lendf.Me 的 withdraw() 函數發起調用,最終提現
在這里,我們不難分析出,攻擊者的 withdraw() 調用是發生在 transferFrom 函數中,也就是在 Lendf.Me 通過 transferFrom 調用用戶的 tokensToSend() 鉤子函數的時候調用的。很明顯,攻擊者通過 supply() 函數重入了 Lendf.Me 合約,造成了重入攻擊,那么具體的攻擊細節是怎樣的呢?我們接下來跟進 Lendf.Me 的合約代碼。
代碼分析
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:SUPPLYUPPPPLSUPTrealmedicinesupplychainUPP價格ripple幣是數字加密貨幣嗎
委托投資在幣圈是很正常的現象,小白將投資委托給老手或者熟悉情況的朋友投資,但這樣也會產生很多風險,一些幣圈大佬也都有類似的“被坑”經歷,應該如何預防、避免乃至做好最后訴訟時的準備.
1900/1/1 0:00:004月18日晚,專業互金律師火伊婕與吳說區塊鏈進行了訪談,總結要點如下: 關于Fcoin 1、目前Fcoin在多地被刑事立案,您如何看待此事?火律師:立案是刑事案件開始的第一步,類似點外賣.
1900/1/1 0:00:00站上60日線后,迎來大幅拉升,一鼓作氣突破多重阻力壓制,最高漲至7750在回落,反彈高點已經接近7800-8000強壓區,這一帶匯聚了10500下來的斐波那契0.618回撤位.
1900/1/1 0:00:00狂人說 現在隨便去個超市,買點東西就上千,這事放在幾十年前,簡直不可想象,我上學的時候,萬元戶就是大款,如果誰家有幾十萬恨不得可以橫著走,現在呢,一萬塊夠干啥,不過就是一個普通家庭的幾頓聚餐.
1900/1/1 0:00:004月16日,螞蟻區塊鏈面向中小企業正式推出「開放聯盟鏈」,首次全面開放螞蟻區塊鏈的技術和應用能力。即日起,中小企業開發者可以像搭積木般開發相關區塊鏈應用,并與螞蟻區塊鏈共建數字經濟的未來.
1900/1/1 0:00:004月20日上午,國家發改委召開4月份例行新聞發布會,發布會上首次明確“新基建”的范圍,其中5G、區塊鏈等新技術入圍新型基礎設施建設。具體來看,新型基礎設施建設內容包括三個方面:1.信息基礎設施.
1900/1/1 0:00:00