老牌DeFi项目Yearn Finance被盗超1000万美元,简要梳理攻击过程

This article is not available in the current language yet. Showing the original version.
2023年4月13日,据Beosin-Eagle Eye态势感知平台消息,Yearn Finance的yusdt合约遭受黑客闪电贷攻击,黑客获利超1000万美元。

原文:《被盗超1000万美元,Yearn Finance如何被黑客“盯上”?

2023年4月13日,据Beosin-Eagle Eye态势感知平台消息,Yearn Finance的yusdt合约遭受黑客闪电贷攻击,黑客获利超1000万美元。

老牌DeFi项目Yearn Finance被盗超1000万美元,简要梳理攻击过程https://eagleeye.beosin.com/RiskTrxDetail/0xd55e43c1602b28d4fd4667ee445d570c8f298f5401cf04e62ec329759ecda95d

关于本次事件,Beosin安全团队在白天已将简析以快讯的形式分享给大家,现在我们再将长文分享如下:

老牌DeFi项目Yearn Finance被盗超1000万美元,简要梳理攻击过程

事件相关信息

攻击交易

0xd55e43c1602b28d4fd4667ee445d570c8f298f5401cf04e62ec329759ecda95d

0x8db0ef33024c47200d47d8e97b0fcfc4b51de1820dfb4e911f0e3fb0a4053138

0xee6ac7e16ec8cb0a70e6bae058597b11ec2c764601b4cb024dec28d766fe88b2

攻击者地址

0x5bac20beef31d0eccb369a33514831ed8e9cdfe0

0x16Af29b7eFbf019ef30aae9023A5140c012374A5

攻击合约

0x8102ae88c617deb2a5471cac90418da4ccd0579e

攻击流程

下面以

0xd55e43c1602b28d4fd4667ee445d570c8f298f5401cf04e62ec329759ecda95d为例进行分析。

1.攻击者首先通过闪电贷借出了500万Maker: Dai Stablecoin、500万USD以及200万Tether: USDT Stablecoin作为攻击本金。

老牌DeFi项目Yearn Finance被盗超1000万美元,简要梳理攻击过程

2.攻击者调用aave池子合约的repay函数偿还其他人的欠款,这一步是为了将aave池子抵押收益降低,从而降低yearn:yUSDT Token合约中aave池子的优先级(yearn: yUSDT Token合约会根据收益情况判断将资金投入哪个池子)。

老牌DeFi项目Yearn Finance被盗超1000万美元,简要梳理攻击过程

3.接着攻击者调用yearn: yUSDT Token合约的deposit函数质押了90万Tether: USDT Stablecoin,该函数会根据质押量为调用者铸相关数量的yUSDT,计算方式与池子中各种代币余额有关,如下图,此时为攻击者铸了82万的yUSDT。

老牌DeFi项目Yearn Finance被盗超1000万美元,简要梳理攻击过程

老牌DeFi项目Yearn Finance被盗超1000万美元,简要梳理攻击过程

4.此时,合约中有90万Tether: USDT Stablecoin与13万Aave: aUSDT Token V1

老牌DeFi项目Yearn Finance被盗超1000万美元,简要梳理攻击过程

5. 接下来攻击者使用15万USD兑换了15万的bZx USDC iToken,并将其发送给了yearn: yUSDT Token合约,此时,合约中有118万的资金,攻击者拥有90/103的份额,也就是能提取103万资金。

老牌DeFi项目Yearn Finance被盗超1000万美元,简要梳理攻击过程

6.随后,攻击者调用yearn: yUSDT Token合约的withdraw函数提取质押资金,此时合约中仅有攻击者之前质押的90万Tether: USDT Stablecoin、初始的13万Aave: aUSDT Token V1以及攻击者转入的15万bZx USDC iToken,而如果一个池子中代币不足的话,会按顺序提取后续池子的代币,此时攻击者将90万Tether: USDT Stablecoin以及13万Aave: aUSDT Token V1全部提取出来,经过本次操作,合约中仅有15万bZx USDC iToken。

老牌DeFi项目Yearn Finance被盗超1000万美元,简要梳理攻击过程

7. 随后,攻击者调用yearn: yUSDT Token合约的rebalance函数,该函数会将当前池子的代币提取出来,并质押到另一个收益更高的池子中,由于第2步操作,合约会将USDT和USDC提取出来,添加到收益更高的池子中,但当前合约仅有bZx USDC iToken,也只能提取出USDC,提取出来后将复投到其他USDT池子,此时复投将跳过。

老牌DeFi项目Yearn Finance被盗超1000万美元,简要梳理攻击过程

8.攻击者向池子中转入1单位的Tether: USDT Stablecoin,并再次调用yearn: yUSDT Token合约的deposit函数质押了1万Tether: USDT Stablecoin,由于第7步的操作,合约已经将所有池子中的资金全部取出来了,并且没办法添加到新池子中,导致pool这个变量计算出来就是攻击者向其中打入的1,而作为除数的pool,将计算出一个巨大的值,向攻击者铸了1.25*10^15枚yUSDT。

老牌DeFi项目Yearn Finance被盗超1000万美元,简要梳理攻击过程

9.最后,攻击者利用yUSDT将其他稳定币全部兑换出来并归还闪电贷。

漏洞分析

本次攻击主要利用了yUSDT Token合约配置错误,在进行rebalance重新选择池子的时候,仅使用了USDT(token为USDT)作为添加数量,而USDC无法添加池子,从而导致了攻击者使用USDC将该合约所有USDT“消耗掉”后,池子余额变为了0,从而铸了大量的代币。

老牌DeFi项目Yearn Finance被盗超1000万美元,简要梳理攻击过程

老牌DeFi项目Yearn Finance被盗超1000万美元,简要梳理攻击过程

资金追踪

截止发文时,Beosin KYT反洗钱分析平台发现被盗资金1150万美元部分已经转移到Tornado cash,其余还存储在攻击者地址。

总结

针对本次事件,Beosin安全团队建议:初始化配置时进行严格检查。同时项目上线前建议选择专业的安全审计公司进行全面的安全审计,规避安全风险。

Share to:

Author: Beosin

Opinions belong to the column author and do not represent PANews.

This content is not investment advice.

Image source: Beosin. If there is any infringement, please contact the author for removal.

Follow PANews official accounts, navigate bull and bear markets together
PANews APP
Binance Alpha launches Bsquared Network's second airdrop.
PANews Newsflash