概述
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從YFI金庫開始引入一鍵式遷移至v2金庫功能:3月11日,yearn.finance (YFI)官方發推稱,為簡化遷移,官方從YFI金庫開始引入一鍵式遷移功能。用戶可將YFI從v1金庫遷移至v2金庫。[2021/3/11 18:34:51]
接下來,攻擊者將800,000USDT轉移到了攻擊合約0x9fcc1409b56cf235d9cdbbb86b6ad5089fa0eb0f中。在該合約中,攻擊者多次調用了Aave:LendingPoolV1的repay函數,幫助其他人償還債務,以使Aave的APR等于0:
攻擊者調用了yUSDT的deposit函數,抵押了900,000USDT,并獲得了820,000yUSDT:
接下來,攻擊者調用了bZxiUSDC的mint函數,使用156,000USDC鑄造了152,000bZxiUSDC,并將其轉移到了YearnyUSDT:
SushiSwap開啟投票表決Yearn和Sushi合作相關的兩項提案:12月2日,SushiChef官方宣布,社區已開啟最新兩項提案投票。兩項提案分別為:1.添加和參與Yearn財政建設,具體代幣分配比例為60% SUSHI、20% USDC + DAI、10% ETH、5% YFI,以及5% BTC (tBTC-renBTC-wBTC)。2.針對Yearn和Sushi合作設定永久菜單(menu)。具體而言,Keep3r/ETH池將被添加到永久菜單,類似于REN/ETH 、CRV/ETH,只要是金庫中的幣種均可選擇進行配對。若提案通過將通知核心開發者,并由Sushiswap團隊實施。該提案適用于48小時的時間鎖。[2020/12/2 22:53:01]
攻擊者調用Yearn:yUSDT的withdraw函數,將820,000yUSDT兌換成1,030,000USDT。此時,合約中只剩下攻擊者轉移的bZxiUSDC:
接下來攻擊者調用Yearn:yUSDT的rebalance函數,銷毀bZxiUSDC:
Yearn已允許存入CRV分享Curve DAO管理費:Yearn核心開發人員banteg發布推文稱已為Backscratcher Vault創建了一個用戶界面,允許用戶將CRV代幣存入vault,分享Curve DAO的管理費,Yearn將在未來推出支持管理費支付的功能。[2020/11/9 12:03:35]
然后攻擊者向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創始人向Chef Nomi發問:開發資金是否一并歸還?:此前,SushiSwap創始人Chef Nomi宣布將項目控制權轉讓給FTX創始人兼首席執行官Sam Bankman Fried,并表態“希望SushiSwap沒有我也能做得很好”。yearn.finance創始人Andre Cronje在推特上回應道:“沒有我”是什么意思?你要離開這個項目嗎?如果是的話,你會歸還開發資金嗎?到目前為止,你目前所做的只是交出了一個基于Uniswap Protocol的代幣。這些資金不是用來進一步發展項目的嗎?你不是那個開發人員嗎?”[2020/9/6]
漏洞分析
這次攻擊中最關鍵的一點,是攻擊者使用100,000USDT鑄造了1,252,660,242,850,000個yUSDT。查看deposit函數的實現:
可以看到share的數量和變量pool相關,pool越小,share越大,而pool的值由_calcPoolValueInToken獲得:
yearn.finance 8號治理提案考慮采用減半機制對治理代幣YFI進行增發:DeFi聚合收益協議yearn.finance的治理代幣YFI的8號治理議案正在進行中,據相關消息,8號提案是對已經通過的0號提案(治理代幣YFI總量3萬枚限制)的補充。具體內容包括:
1. 采用類似比特幣的減半模式,每周減半,在兩個月內增發3萬枚代幣,為形成更大社區共識爭取時間;
2. 原定于三天以后截止的YFI流動性挖礦繼續進行;
3. 增發完成后銷毀增發私鑰,以后無法增發,總量限制在6萬枚。
目前支持132萬票,反對2.5萬票,但參與人數仍未達到項目要求的33%。Coingecko研究分析師、yearn.finance社區治理的簽署人之一Dary Lau表示,未來將社區將繼續決定代幣的通脹代幣機制以繼續保持合理的流動性。
據DeBank數據,yearn項目的總鎖倉量(Total Value Locked)已達到2.905億美元,超過Balancer排名第6,與第5名Curve僅相差4300萬美元。YFI代幣市值在DeBank收錄的27個DeFi協議中,僅以2000萬美元排名23名。[2020/7/23]
攻擊者在調用rebalance函數后,合約中只存在了USDC,但是_balance()獲取的是USDT的余額,USDC的余額并不計入其中,因此此時的pool為1:
這里顯然是項目方的配置錯誤,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
L2是目前討論熱度最高的賽道之一。L2旨在解決以太坊長期存在的、提升吞吐量的迫切需求,今年,其頭部生態相繼迎來階段性的技術落地,同時也是今年以太坊主網升級的主要受益板塊.
1900/1/1 0:00:00日前,“孫宇晨美術館”重磅亮相。作為主講人,波場TRON創始人孫宇晨在開箱視頻中向大家介紹了多個頂級藏品。本期我們聚焦畢加索的《戴項鏈的躺臥裸女》,帶大家了解藏品背后的故事.
1900/1/1 0:00:00BitfinexAlpha|我們仍未擺脫經濟衰退的擔憂和困境,但比特幣行情依然保持看漲對于市場和經濟政策制定者來說,目前的難題是當經濟數據表明經濟放緩時,這被認為是積極的訊號.
1900/1/1 0:00:00據官方數據,在過去3個月中,TRX流通量減少了6億枚,TRX正變得更加稀缺。 JT已上線去中心化交易所uTrade 提供JT/TRX流動性挖礦UP:據官方消息,聚幣Jubi平臺通證JT已發行TR.
1900/1/1 0:00:00靈魂綁定代幣,自2022年由以太坊創始人VitalikButerin提出以來,一直備受行業關注,其未來巨大的潛力和廣泛的應用場景吸引到了眾多從業者入場.
1900/1/1 0:00:00各位朋友,歡迎來到SignalPlus每日晨報。SignalPlus晨報每天為各位更新宏觀市場信息,并分享我們對宏觀趨勢的觀察和看法。歡迎追蹤訂閱,與我們一起關注最新的市場動態.
1900/1/1 0:00:00