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?:
接下來,攻擊者將?800,?000USDT轉移到了攻擊合約0x9fcc1409b56cf235d9cdbbb86b6ad5089fa0eb0f中。在該合約中,攻擊者多次調用了?Aave:LendingPoolV1的repay函數,幫助其他人償還債務,以使Aave的APR等于?0?:
Curve和Yearn發現新資金池存在風險后已關閉,資金將退回給用戶:穩定幣兌換平臺Curve Finance發推稱,我們在新的Yearn.finance yv2 資金池中發現了問題,所有資金是安全的,所有存款將直接發送到流動性提供者的錢包,用戶不需要任何操作。Curve還表示該安全問題是由Curve和Yearn團隊共同合作發現和處理的。[2021/2/8 19:13:36]
攻擊者調用了yUSDT的deposit函數,抵押了?900,?000USDT,并獲得了?820,?000yUSDT:
接下來,攻擊者調用了?bZxiUSDC?的mint函數,使用?156,?000USDC?鑄造了?152,?000bZxiUSDC,并將其轉移到了YearnyUSDT:
攻擊者調用Yearn:yUSDT?的withdraw函數,將?820,?000yUSDT兌換成?1,?030,?000USDT。此時,合約中只剩下攻擊者轉移的bZxiUSDC:
Yearn Finance:DAI v1 vault遭到攻擊:金色財經報道,Yearn Finance發推文稱,已注意到DAI v1 vault遭到了攻擊。目前該漏洞已得到緩解,此后會發布完整報告。[2021/2/5 18:56:30]
接下來攻擊者調用Yearn:yUSDT的rebalance函數,銷毀bZxiUSDC:
然后攻擊者向yUSDT合約轉移了1/e?6個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.finance重新發布v1 ETH yVault:yearn.finance推特宣布,重新發布v1 ETH yVault,此vault經過了改造,能夠適應v1 yVault遇到過的高要求。此外,yearn.finance表示,為提款和更有效的債務管理設置了緩沖。滑點保護將減輕用戶遭受異常大的滑點的困擾。此vault從Makerdao使用ETH鑄造DAI,從Curve Finance的3pool獲得CRV。[2021/1/29 14:19:13]
然后在yearn:yDAI和yearn:yUSDC中分別調用withdraw,提取678?萬個DAI和?562?w?萬個USDC,并歸還閃電貸:
漏洞分析
這次攻擊中最關鍵的一點,是攻擊者使用?100,?000USDT鑄造了1,?252,?660,?242,?850,?000個yUSDT。查看deposit函數的實現:
外媒:Yearn Finance合并Pickle或為壟斷人才:11月29日消息,高級開發人員Banteg發推表示,盡管Cronje的博客文章將Yearn 和Pickle的工作描述為“合并”,但Pickle公告是“開發人員合作”,并且Yearn Twitter官方帳戶將其描述為“共生關系”。 分析師Tyler Reynolds表示,激勵、培訓和引入新開發人員已成為該協議的優先事項,挖走有才華的開發人員和壟斷人才是Yearn的直接舉措。(cointelegraph)[2020/11/29 22:29:39]
可以看到share的數量和變量pool相關,pool越小,share越大,而pool的值由_calcPoolValueInToken獲得:
攻擊者在調用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
在當今時代,外匯交易已經成為了全球交易市場的一個重要組成部分。外匯交易平臺則是外匯交易的重要載體。但是對于初學者來說,了解外匯交易平臺的知識可能會讓人感到頭疼.
1900/1/1 0:00:00ForesightNews現場報道,在「2023香港Web3嘉年華」主會場《比特幣生態:技術與發展》中.
1900/1/1 0:00:00文章編輯時間2023.4.14凌晨0:20分,所有觀點不構成任何投資建議!僅供學習交流。FTX首席律師表示,公司考慮重新開放,可能讓債權人轉換為新交易所的股份.
1900/1/1 0:00:00ForesightNews消息,Web3任務平臺SoQuest已在AppStore和GooglePlay上線其移動端App.
1900/1/1 0:00:00在最近突破之后,Solana瞄準了26美元的供應區域。盡管26美元的休息價將幫助SOL恢復2月份的損失,但任何大幅回撤都可能影響其長期價格走勢.
1900/1/1 0:00:00尊敬的用戶: 由于系統升級維護,使用火必賬號提幣功能暫不可用,預計下周內恢復,在此期間,您仍可使用區塊鏈地址進行提幣。 感謝你的理解和支持.
1900/1/1 0:00:00