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?:
跨链Web3移动端钱包Steakwallet宣布添加Yearn协议:3月12日消息,跨链 Web3 移动端钱包 Steakwallet 宣布添加 Yearn 协议,用户在以太坊和 Fantom 链上的资产通过该钱包通过简单操作即可参与 Yearn 协议。[2022/3/12 13:52:04]
攻击者调用了yUSDT的deposit函数,抵押了?900,?000USDT,并获得了?820,?000yUSDT:
接下来,攻击者调用了?bZxiUSDC?的mint函数,使用?156,?000USDC?铸造了?152,?000bZxiUSDC,并将其转移到了YearnyUSDT:
攻击者调用Yearn:yUSDT?的withdraw函数,将?820,?000yUSDT兑换成?1,?030,?000USDT。此时,合约中只剩下攻击者转移的bZxiUSDC:
Yearn.finance:v2 yVault将收取20%收入费和2%管理费:Yearn.finance凌晨发推称,“我们的v2 yVault具有新的费用结构。取款费被取消。相反,我们实施了20%的收入费和2%的管理费(AUM)。”[2021/1/22 16:44:24]
接下来攻击者调用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:
钱包聚合器Frontier集成Yearn yVaults:钱包聚合器Frontier宣布集成Yearn yVaults。用户现在可以无缝追踪和管理他们的vault头寸与Frontier移动界面。[2020/11/4 11:38:38]
然后在yearn:yDAI和yearn:yUSDC中分别调用withdraw,提取678?万个DAI和?562?w?万个USDC,并归还闪电贷:
漏洞分析
这次攻击中最关键的一点,是攻击者使用?100,?000USDT铸造了1,?252,?660,?242,?850,?000个yUSDT。查看deposit函数的实现:
可以看到share的数量和变量pool相关,pool越小,share越大,而pool的值由_calcPoolValueInToken获得:
yearn.finance发起添加yRenBTC Delegated Vault的新提案:yearn.finance社区成员发起添加yRenBTC Delegated Vault的新提案。具体来说,即在Vault产品中创建一个RenVM Bridge存款形式,类似于Curvefi的做法。用户存入BTC(或RenBTC),我们给用户yRenBTC,把他们的BTC转化为RenBTC,创建一个CDP,通过任何方法使用DAI,利用管理抵押品和使用我们的Vault生成收益,用于购买市场上的RenBTC,然后以RenBTC向存款人交付回报。[2020/8/24]
攻击者在调用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
比特币价格从31,000美元区域开始下行修正。在多头再次出现之前,BTC可能会跌向29,000美元。比特币在30,500美元的支点水平下方开始下行修正.
一、项目简介? Gosleep是一款以HealthFi为重点的生活方式应用程序。 二、代币信息 代币名称:GoSleep代币简称:ZZZ代币类型:ARBI? 三、常用链接 官网:https://.
公众呺:Web3团子 卡尔达诺(ADA)是按市值计算的第七大加密货币,目前正引起交易员和投资者的注意,因为它接近可能引发价格大幅上涨的关键技术指标.
故事亮点比特币价格在周末跌破30,000美元,引发了对未来一周看跌回调的猜测山寨币也可能面临小幅回调,但在BTC价格完成重大变动之前仍会在狭窄区域内保持整合随着明星加密货币比特币跌回30.
ForesightNews现场报道,在「2023香港Web3嘉年华」主会场《比特币生态:技术与发展》中.
作为2023年最成功的资产之一,随着比特币(BTC)达到3万美元,一位分析师认为美联储可能引发2000亿美元的价格飙升.