火星链 火星链
Ctrl+D收藏火星链
首页 > 中币 > 正文

SDC:Yearn Finance攻击事件分析

作者:

时间:1900/1/1 0:00:00

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?:

Yearn Finance:因Euler被盗间接损失138万美元,将使用Treasury资金足额承担:金色财经报道,Yearn Finance发推称,虽然对Euler没有直接的风险敞口,但一些vaults却间接暴露于黑客攻击。

采用Idle和Angle策略的vaults在yvUSDT和yvUSDC上的风险敞口总计138万美元。

开发者目前正在积极处理受影响的协议,任何剩余的坏账将由Yearn Treasury承担,所有vaults都将保持开放并全面运作,用户可以照常使用。[2023/3/14 13:01:53]

攻击者调用了yUSDT的deposit函数,抵押了?900,?000USDT,并获得了?820,?000yUSDT:

接下来,攻击者调用了?bZxiUSDC?的mint函数,使用?156,?000USDC?铸造了?152,?000bZxiUSDC,并将其转移到了YearnyUSDT:

Gucci与SuperRare合作推出NFT系列The Next 100 Years of Gucci:7月7日消息,奢侈品巨头Gucci与NFT市场SuperRare合作推出NFT系列The Next 100 Years of Gucci。Gucci将邀请11位NFT艺术家将其百年品牌传统融入到该NFT系列中,并从今日起在Vault网站上进行拍卖。

此前报道,Gucci购入25000美元NFT市场SuperRare代币RARE。[2022/7/7 1:58:42]

攻击者调用Yearn:yUSDT?的withdraw函数,将?820,?000yUSDT兑换成?1,?030,?000USDT。此时,合约中只剩下攻击者转移的bZxiUSDC:

接下来攻击者调用Yearn:yUSDT的rebalance函数,销毁bZxiUSDC:

yearn.finance购买并质押141.4万枚CRV:6月21日消息,DeFi收益聚合器yearn.finance发推称,购买并质押了141.4万枚CRV,yearn.finance 表示,这将同时提高Curve机池的“boost”(加速功能)与 yveCRV、yvBOOST奖励,使得质押者获得更高的年化收益率。[2021/6/21 23:54:14]

然后攻击者向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考虑使用YFI创建MakerDAO抵押债仓,以弥补损失:Yearn.Finance回应yDAI保险库被攻击,官方表示正在评估一些方案,目前包括用YFI创建一个MakerDAO的抵押债仓以弥补亏损。官方同时表示,投资存在风险,如果用户想防止类似因为协议问题的损失再次发生,请使用保险项目Cover或者Nexusmutual。

此前消息,2月5日,YearnFinancev1yDAI保险库遭到攻击,损失1100万美元。[2021/2/7 19:07:47]

然后在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获得:

攻击者在调用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

标签:USDSDTUSDTSDCASUSD价格fsc币usdt币usdt币怎么挖矿AUSDC价格

中币热门资讯
加密货币:比特币价格在上涨 50% 后回落,这对加密货币市场来说意味着

比特币价格开始出现类似市场顶部的信号,这表明抛售压力可能正在上升。尽管社会提及率有所上升,但鲸鱼手中缺乏对稳定币的动向表明兴趣很低.

1900/1/1 0:00:00
Bitget Launchpad 项目 Gosleep 将于 18:00 关闭充值通道

ForesightNews消息,Bitget上线全新Launchpad项目Gosleep(ZZZ),截止发稿时参与人数已超4万,充值通道将于北京时间4月17日18:00关闭.

1900/1/1 0:00:00
COI:CoinW合约【天天交易连续奖】第三十二期,交易合约,100%中奖

亲爱的CoinW用户:天天交易系列活动将于新加坡时间2023年4月16日00:00正式上线第三十二期,力度不减,福利不变,参与合约即可得奖!当日交易,次日发奖.

1900/1/1 0:00:00
COIN:CFX还有上涨希望吗?真的会成为国产之后吗?

很多人把CFX叫东方巨龙,神秘面纱中国最近几个月几十倍涨幅出尽风头,近期币安宣布支持其主网集成后.

1900/1/1 0:00:00
BIT:BitKeep:BitKeep 用户可通过 SUIBG 获得 SUI 代币

ForesightNews消息,SuiNetwork公布其原生代币SUI的社区访问计划,不提供空投给用户和贡献者,仅可购买代币,多家交易平台陆续推出SUI新币发售.

1900/1/1 0:00:00
Venus:BitVenus现货:如何查看资产及挂单\t\t

BitVenus各账户资产可以自助查看,有、、。挂单指的是以您指定的价格下单时不会立即与深度列表里的其他订单成交,而是进入深度列表等待对方主动来跟您的订单成交,这样的行为叫挂单.

1900/1/1 0:00:00