概述
2023年4月13日,YearnFinance遭到黑客攻擊,導致大約損失1000萬美元。本文將分析攻擊過程以及漏洞產生的原因。
攻擊分析
這是一筆攻擊交易:
https://etherscan.io/tx/0xd55e43c1602b28d4fd4667ee445d570c8f298f5401cf04e62ec329759ecda95d
攻擊者從Balancer發起了閃電貸,借了500萬DAI、500萬USDC和200萬USDT:
然后在Curve上,攻擊者將500萬DAI兌換成了695,000USDT,并將350萬USDC兌換成151USDT:
攻擊者調用IEarnAPRWithPool的recommend函數來檢查當前的APR。此時,只有Aave的APR不等于0:
Yearn.finance 上線 V3 測試版,針對前端進行多項更新:9月17日消息,Yearn.finance 上線 V3 測試版,該版本的更新主要針對前端,包括加入了對所有持倉以及歷史收益等數據的查詢、使用 Tenderly 模擬用戶的交易以避免意外滑點及交易失敗問題、對 Iron Bank 的完全集成等。此外,V3 版本中還將加入實驗室板塊,該板塊將投資可能無法隨時撤回資金的項目以及類似 AMM LP 一類存在無常損失和短期回撤風險的資產。[2021/9/17 23:32:09]
接下來,攻擊者將800,000USDT轉移到了攻擊合約0x9fcc1409b56cf235d9cdbbb86b6ad5089fa0eb0f中。在該合約中,攻擊者多次調用了Aave:LendingPoolV1的repay函數,幫助其他人償還債務,以使Aave的APR等于0:
攻擊者調用了yUSDT的deposit函數,抵押了900,000USDT,并獲得了820,000yUSDT:
eToro添加Aave,Yearn,Compound和Decentraland交易:平臺eToro表示已在其平臺上增加四項加密資產Aave、Compound、Decentraland和Yearn,以擴大向用戶的服務范圍。額外資產基于DeFi協議,這表明去中心化金融的增長有所增加。盡管最近加密貨幣市場出現下滑,但該平臺仍在擴展。(invezz)[2021/5/25 22:40:07]
接下來,攻擊者調用了bZxiUSDC的mint函數,使用156,000USDC鑄造了152,000bZxiUSDC,并將其轉移到了YearnyUSDT:
攻擊者調用Yearn:yUSDT的withdraw函數,將820,000yUSDT兌換成1,030,000USDT。此時,合約中只剩下攻擊者轉移的bZxiUSDC:
接下來攻擊者調用Yearn:yUSDT的rebalance函數,銷毀bZxiUSDC:
Yearn核心開發者:發Deriswap假幣的詐騙者錯把全部“收益”轉給了AC:12月9日,Yearn核心開發者Banteg發推表示,發Deriswap假幣的詐騙者通過給AC的地址發送假幣來欺騙普通用戶,但他卻錯把所得收益也轉給了AC。他還表示,計劃由社區用戶部署一個Merkle Distributor的合約將資金歸還給用戶。[2020/12/9 14:40:10]
然后攻擊者向yUSDT合約轉移了1/e6個USDT,并調用了deposit函數,抵押了10,000USDT,獲得了1,252,660,242,850,000yUSDT:
然后在Curve上,攻擊者將70,000yUSDT兌換成5,990,000yDAI,將4億yUSDT兌換成4,490,000yUSDC,將1,240,133,244,352,200yUSDT兌換成1,360,000yTUSD:
然后在yearn:yDAI和yearn:yUSDC中分別調用withdraw,提取678萬個DAI和562w萬個USDC,并歸還閃電貸:
yearn.finance創始人:鏈上治理將在接下來2周內部署:yearn.finance創始人Andre Cronje發推稱,yearn.finance鏈上治理將在接下來的2周內部署(取決于審計結果)。作為第一個官方的鏈上強制治理投票,我提議永久性地銷毀YFI的鑄幣能力。[2020/9/12]
漏洞分析
這次攻擊中最關鍵的一點,是攻擊者使用100,000USDT鑄造了1,252,660,242,850,000個yUSDT。查看deposit函數的實現:
可以看到share的數量和變量pool相關,pool越小,share越大,而pool的值由_calcPoolValueInToken獲得:
攻擊者在調用rebalance函數后,合約中只存在了USDC,但是_balance()獲取的是USDT的余額,USDC的余額并不計入其中,因此此時的pool為1:
yearn.finance:創建veCRV只允許受批準的錢包:8月2日消息,yearn.finance發推表示:目前yearn.finance已經有142346veCRV的配額,Curve讓我們知道如何成為受批準的智能錢包。創建veCRV必須使用受批準的智能錢包。
Curve對此回復道:需要一份合約來檢查受批準的智能錢包,以及一份治理提議來設置這個檢查器。[2020/8/24]
這里顯然是項目方的配置錯誤,yUSDT合約中應當都是USDT類的代幣,但是其fulcrum變量卻是USDC相關的bZxIUSDC代幣,因此yUSDT中的USDC不計入balance中:
攻擊者為什么能調用rebalance函數來burn掉bZxiUSDC代幣呢?查看rebalance函數的實現:
可以看到在_withdrawFulcrum()中會存在redeem和burn操作,因此我們需要讓"newProvider!=provider"成立,其中recommend()的實現:
攻擊者通過控制IIEarnManager(apr).recommend(token)的返回值,使其為都為0來操控newProvider:
如何讓其都為0呢,該函數的返回值和計算出的各個DeFi中的APR相關,由于Compound,bZx,dydx中沒有池子,因此只需要控制Aave(Aave:LendingPoolCoreV1)即可:
要使其值返回為0,需要讓apr.calculateInterestRates函數的第一個返回值為0:
即讓currentLiquidityRate為0,該值和_totalBorrowsStable、_totalBorrowsVariable相關,當這兩個個值都為0時,currentLiquidityRate為0:
_totalBorrowsVariable為0,即Aave:LendingPoolCoreV1此時沒有人存在債務,為了達成這個條件,攻擊者將池中所有人的債務進行了repay:
最后,攻擊者讓_totalBorrowsVariable變為0,所以它能夠調用rebalance函數burn掉bZxiUSDC代幣:
總結
此次Yearn攻擊事件的根本原因是項目方的配置錯誤。攻擊者通過一系列精妙的手法利用了該漏洞,最終獲利大約1000萬美元。
關于我們
AtEoceneResearch,weprovidetheinsightsofintentionsandsecuritybehindeverythingyouknowordon'tknowofblockchain,andempowereveryindividualandorganizationtoanswercomplexquestionswehadn'tevendreamedofbackthen.
了解更多:Website|Medium|Twitter
Tags:USDSDTUSDTEARNusd幣等于多少人民幣AUSDT幣trustwallet沒有usdtSafe Earn
在過去幾年中,RWA的敘事一直處于沉寂狀態,但最近它開始走紅。許多傳統金融機構都開始布局RWA領域,如J.P.Morgan在Polygon區塊鏈上使用日元和新加坡元的代幣化版本執行了第一筆實時交.
1900/1/1 0:00:00Mar.2023,Daniel數據源:NFTAggregatorsOverview&AggregatorStatisticsOverview&BlurAirdrop一年前.
1900/1/1 0:00:00與任何新想法一樣,數字貨幣正在打一場意識形態斗爭,以說服這個世界它們可以提供有益的東西,為全球人民帶來價值。然而,這是一場關于說服富裕工業化發達國家的個人和新興市場的個人的雙線作戰.
1900/1/1 0:00:00各位朋友,歡迎來到SignalPlus每日晨報。SignalPlus晨報每天為各位更新宏觀市場信息,并分享我們對宏觀趨勢的觀察和看法。歡迎追蹤訂閱,與我們一起關注最新的市場動態.
1900/1/1 0:00:00A.市場觀點 一、宏觀流動性 貨幣流動性改善。5月美聯儲如期再加息25個基點,暗示此后暫停行動,預計將是本周期最后一輪加息。但鮑威爾同時表示降低通脹還有很長的路要走,現在降息不合適.
1900/1/1 0:00:00編者按:本文來自微信公眾號DappReview,作者:Vincent星球日報經授權轉發先講講認知門檻上面兩張圖解釋一下:第一張是13年初在一個微信群里我對比特幣的判斷第二張是14年底我在回國前夕.
1900/1/1 0:00:00